Python函数进阶
Python函数进阶
函数多返回值
多返回值:可以返回多个值
注意事项:返回值是和接收值对位,第一个接收第一个,第二个接收第二个
# 演示多个变量,接收多个返回值
def test_return():
return 1, "Hello", True
x,y,z = test_return()
print(x, y, z)
# 结果
1 Hello True
函数多种传参方式
位置参数:
- 根据参数位置来传递参数
关键字参数:
- 通过“键=值”形式传递参数,可以不限参数顺序
- 可以和位置参数混用,位置参数需在前
缺省参数
- 不传递参数值时会使用默认的参数值
- 默认值的参数必须定义在最后
不定长参数:
- 位置不定长传递以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为
args
- 关键字不定长传递以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为
kwargs
def user_info(name, age, gender):
print(f"姓名是:{name},年龄是:{age},性别是:{gender}")
# 位置传参 - 默认使用方式
user_info("小明", 20, "男")
# 关键字传参
user_info(name="小王", age=18, gender="男")
user_info(age=18, name="小王", gender="男")
user_info("小哈", age=10, gender="女")
# 缺省参数(默认值)
def user_info(name, age, gender = '男'):
print(f"姓名是:{name},年龄是:{age},性别是:{gender}")
user_info("小天", 19)
user_info("小天", 19, "女")
# 不定长 - 位置不定长,*号
def user_info(*args):
print(f"args类型是:{type(args)},内容是:{args}")
user_info("哈哈", 13, "男")
# 不定长 - 关键字不定长,**号
def user_info(**kwargs):
print(f"args类型是:{type(kwargs)},内容是:{kwargs}")
user_info(name="二哈", age=19, gender="男")
# 结果
姓名是:小明,年龄是:20,性别是:男
姓名是:小王,年龄是:18,性别是:男
姓名是:小王,年龄是:18,性别是:男
姓名是:小哈,年龄是:10,性别是:女
姓名是:小天,年龄是:19,性别是:男
姓名是:小天,年龄是:19,性别是:女
args类型是:<class 'tuple'>,内容是:('哈哈', 13, '男')
args类型是:<class 'dict'>,内容是:{'name': '二哈', 'age': 19, 'gender': '男'}
函数作为参数传递
-
函数本身是可以作为参数,传入另一个函数中进行使用的。
-
将函数传入的作用在于:传入计算逻辑,而非传入数据
# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute):
result = compute(1, 2)
print(f"compute参数类型是:{type(compute)}")
print(f"计算结果:{result}")
def compute(x, y):
return x + y
test_func(compute)
# 结果
compute参数类型是:<class 'function'>
计算结果:3
lambda匿名函数
定义语法:
lambda 传入参数:函数体(一行代码)
注意事项:
-
匿名函数用于临时构建一个函数,只用一次的场景
-
匿名函数的定义中,函数体只能写一行代码,如果函数体要写多行代码,不可用lambda匿名函数,应使用def定义带名函数
# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute):
result = compute(1, 2)
print(f"compute参数类型是:{type(compute)}")
print(f"计算结果:{result}")
test_func(lambda x, y : x + y)
# 结果
compute参数类型是:<class 'function'>
计算结果:3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2022-09-12 Kubernetes核心技术-Controller
2022-09-12 Kubernetes核心技术Pod