python学习笔记----函数进阶(七)

一、函数多个返回值

def test_return():x = 1y = "hello"z = Truereturn x, y, za, b, c = test_return()print(a)
print(b)
print(c)


二、函数多种传参方式

2.1 函数参数种类

根据使用方式上的不同,函数有4种常见参数的使用方式:

  • 位置参数
  • 关键字参数
  • 缺省参数
  • 不定长参数

2.2 位置参数

  • 位置参数:调用函数时,根据函数定义的参数位置来传递传输
  • 传递的参数和定义的参数的顺序个数必须一致

示例:

def user_info(name, age, gender):print(f"名字:{name},年龄:{age},性别:{gender}")user_info("Tom", 20, "男")

2.3 关键字参数

  • 关键字参数:函数调用时通过键 = 值 形式传递采纳数
  • 作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。
def user_info(name, age, gender):print(f"名字:{name},年龄:{age},性别:{gender}")# 关键字传参
# 可以不按照固定顺序
user_info(age = 20, name = "小明", gender = "男")# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info("小明", gender = "男", age = 20)

2.4 缺省参数

  • 缺省参数:缺省参数(也称为默认参数)是函数定义中为参数指定的默认值。当调用函数时,如果没有为具有默认值的参数提供实际的参数值,那么将自动使用这个默认值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
  • 作用:当调用函数时没有传递参数,就会使用默认是用缺省参数对应的值
def user_info(name, age, gender = "男"):print(f"名字:{name},年龄:{age},性别:{gender}")user_info("小天", 20)   # 名字:小天,年龄:20,性别:男

2.5 不定长参数

  • 不定长参数:不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
  • 作用:当调用函数时不确定参数个数时,可以使用不定长参数

2.5.1 不定长参数—位置传递

  • 用途:*args 用于收集额外的位置参数(那些没有被命名的参数),这些参数被封装成一个元组。
  • 定义方式:在参数名前加一个星号 * 来定义,如 *args

示例:

def user_info(*args):print(args)user_info(1, 2, 3, "小明")    # (1, 2, 3, '小明')

2.5.2 不定长参数—关键字传递

  • 用途:**kwargs 用于收集那些关键字参数,这些参数没有在函数定义中直接命名。这些参数被封装成一个字典。
  • 定义方式:在参数名前加两个星号 ** 来定义,如 **kwargs
def user_info(**kwargs):print(kwargs)user_info(name = "小王", age = 11, gender = "男")    #{'name': '小王', 'age': 11, 'gender': '男'}


三、匿名函数

3.1 函数作为参数传递

场景描述:
假设我们正在编写一个购物应用,需要根据不同的促销策略来计算商品的最终价格。我们可以定义几种不同的促销计算函数,然后将这些函数作为参数传递给另一个函数,这个函数负责应用这些促销策略来显示最终价格。

def no_discount(price):"""不打折,返回原价"""return pricedef ten_percent_discount(price):"""打九折"""return price * 0.9def twenty_percent_discount(price):"""打八折"""return price * 0.8# 主函数
def apply_discount(price, discount_function):"""应用折扣策略计算最终价格"""final_price = discount_function(price)print(f"经过促销策略处理后的价格为:¥{final_price:.2f}")# 商品原价
original_price = 100# 不使用折扣
apply_discount(original_price, no_discount)# 使用10%折扣
apply_discount(original_price, ten_percent_discount)# 使用20%折扣
apply_discount(original_price, twenty_percent_discount)
  • 通过将函数作为参数传递,我们的 apply_discount 函数变得非常灵活和可重用,它可以与任何符合标准的促销策略函数配合使用。这种设计使得你可以很容易地增加新的促销策略,而无需修改 apply_discount 函数的代码。此外,这种方法也便于测试和维护,因为每个促销策略都是独立的,可以单独测试和修改。

3.2 lambda匿名函数

  • lambda 函数是一种简洁的定义匿名函数的方式。lambda 函数本质上就是一个没有名字的小函数,它们经常用于需要一个函数的场合,但该函数又足够简单以至于不值得单独定义。

语法:lambda 传入参数: 函数体(一行代码)

classify = lambda x: "偶数" if x % 2 == 0 else "奇数"
print(classify(3))  # 输出: 奇数
print(classify(2))  # 输出: 偶数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EPAI手绘建模APP资源管理和模型编辑器2

g) 矩形 图 26模型编辑器-矩形 i. 修改矩形的中心位置。 ii. 修改矩形的长度和宽度。 h) 正多边形 图 27模型编辑器-内接正多边形 图 28模型编辑器-外切正多边形 i. 修改正多边形的中心位置。 ii. 修改正多边形中心距离端点的长度。 iii. 修改正多边形的阶数。阶数为3&…

【Unity 协程】

Unity中的协程(Coroutine)是一种编程结构,它允许你以一种看似同步的方式编写可能需要异步执行的代码。协程特别适用于需要在一定时间后执行操作,或者在循环执行某段代码直到某个条件满足时的场景。 协程使用IEnumerator委托来实现…

基于HAL库的stm32中定时器的使用--定时器中断每隔一秒进行led灯的闪烁以及定时器生成PWM

一:什么是定时器 (1)stm32定时器,是存在于stm32单片机中的一个外设。stm32共有八个定时器,两个高级定时器(TIM1、TIM8),四个通用定时器(TIM2、TIM3、TIM4、TIM5&#xff…

docker 指定根目录 迁移根目录

docker 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、启动docker程序前就手动指定docker根目录为一个大的分区(支持动态扩容),事前就根本上解决根目录空间不够问题3.1.0、方法思路3.1.1、docker官网安装文档3.1.2、下载docker安装包3.1.3、安装doc…

贪吃蛇(下)游戏的实现

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 文章目录 前言一.蛇和食物的打印二.游戏的运行逻辑三.结束游戏 (善后工作)四.游戏的测…

C语言中字符串输入的3种方式

Ⅰ gets() 函数 gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间 # include <stdio.h> int main(void) {char a[256] {0};gets(a);printf("%s",a);return 0; }Ⅱ getchar() # include <stdio.h> int mai…

工业光源环形系列一AOI光源特点

产品特点 ◆具有环形光源所有的特点&#xff1b; ◆采用不同角度多色光&#xff0c;使被照物体的成像更具立体特征&#xff1b; ◆每种颜色可独立控制。

论文辅助笔记:Tempo之modules/prompt.py

1 get_prompt_param_cls 2 get_prompt_value 3 Prompt 类 3.1 _init_weights 3.2 forward

Spring Security Oauth2 JWT 添加额外信息

目录 一、问题描述 二、实现步骤 1、自定义TokenEnhancer 2、配置授权服务器 3、自定义UserDetails的User类 三、参考文档 一、问题描述 Oauth2里默认生成的JWT信息并没有用户信息&#xff0c;在认证授权后一般会返回这一部分信息&#xff0c;我对此进行了改造。 Oauth…

CC工具箱使用指南:【按属性分割成SHP】

一、简介 Arcgis中有一个【按属性分割】的工具&#xff0c;可以将要素类按字段值分割成多个gdb要素类&#xff0c;也可以分割成多个SHP要素。 这个工具是在【按属性分割】工具的基础上做了一个强化&#xff0c;可以将分割出来的SHP要素分别放在独立的文件夹内。 实际工作中&…

Java | Leetcode Java题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; public class Solution {public int climbStairs(int n) {double sqrt5 Math.sqrt(5);double fibn Math.pow((1 sqrt5) / 2, n 1) - Math.pow((1 - sqrt5) / 2, n 1);return (int) Math.round(fibn / sqrt5);} }

爬虫工具:避免复制文字收费,VIP。。

step ctrl shift i 打开开发者工具 点击...打开设置勾选禁用JavaScript Principle 事件处理&#xff1a;JavaScript 用于处理用户交互&#xff0c;例如点击、滚动、输入等禁用 JavaScript 后&#xff0c;页面上的所有 JavaScript 代码都将不会执行

学习网络安全 你必须要学会的20款工具

工欲善其事必先利其器&#xff0c;在新入门网络安全的小伙伴而言。这些工具你必须要有所了解。本文我们简单说说这些网络安全工具吧&#xff01; Web安全类 Web类工具主要是通过各种扫描工具&#xff0c;发现web站点存在的各种漏洞如sql注入、xss等。从而获取系统权限&#xf…

IoTDB 入门教程 基础篇⑦——数据库管理工具 | DBeaver 连接 IoTDB

文章目录 一、前文二、下载iotdb-jdbc三、安装DBeaver3.1 DBeaver 下载3.2 DBeaver 安装 四、安装驱动五、连接数据库六、参考 一、前文 IoTDB入门教程——导读 二、下载iotdb-jdbc 下载地址org/apache/iotdb/iotdb-jdbc&#xff1a;https://maven.proxy.ustclug.org/maven2/o…

stamps做sbas-insar,时序沉降图怎么画?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

【人工智能Ⅱ】实验5:自然语言处理实践(情感分类)

实验5&#xff1a;自然语言处理实践&#xff08;情感分类&#xff09; 一&#xff1a;实验目的与要求 1&#xff1a;掌握RNN、LSTM、GRU的原理。 2&#xff1a;学习用RNN、LSTM、GRU网络建立训练模型&#xff0c;并对模型进行评估。 3&#xff1a;学习用RNN、LSTM、GRU网络做…

AST原理(反混淆)

一、AST原理 jscode var a "\u0068\u0065\u006c\u006c\u006f\u002c\u0041\u0053\u0054";在上述代码中&#xff0c;a 是一个变量&#xff0c;它被赋值为一个由 Unicode 转义序列组成的字符串。Unicode 转义序列在 JavaScript 中以 \u 开头&#xff0c;后跟四个十六进…

Python学习笔记------json

json简介 JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据 JSON本质上是一个带有特定格式的字符串 主要功能&#xff1a;json就是一种在各个编程语言中流通的数据格式&#xff0c;负责不同编程语言中的数据传递和交互 为了让不同的语言能够相互通…

《LTC与铁三角∶从线索到回款-人民邮电》关于铁三角不错的论述

《LTC与铁三角∶从线索到回款-人民邮电》一书中&#xff0c;关于铁三角不错的论述&#xff0c;收藏之&#xff1a;客户责任人的角色定义及核心价值 AR 的核心价值定位主要体现在三个方面&#xff1a;客户关系、 客户满意度、竞争对手 “ 压制 ” 。 维护客户关系&#x…

百川2模型解读

简介 Baichuan 2是多语言大模型&#xff0c;目前开源了70亿和130亿参数规模的模型。在公开基准如MMLU、CMMLU、GSM8K和HumanEval上的评测&#xff0c;Baichuan 2达到或超过了其他同类开源模型&#xff0c;并在医学和法律等垂直领域表现优异。此外&#xff0c;官方还发布所有预…