Python函数的参数
位置参数、默认值参数、可变参数、关键字参数和命名关键字参数
1 函数结构
def 函数名(参数):
函数体
返回值
2 位置参数
- 略
3 默认值参数
- 略
4 可变参数
# 可变长度参数函数
# 可变参数允许你传入0个或任意个参数,这些参数在调用时自动组装成元祖(tuple)
# 1 定义求和函数
def calc1(numbers):
sum = 0
# for循环遍历传递的列表或者元祖
for num in numbers:
sum = sum+num
#返回求和结果
return sum
# 调用calc1函数传递列表作为参数
print(calc1([1,2,3,4]))
# 调用calc1函数元祖作为参数
print(calc1((1,2,3,4,5)))
# 调用calc1函数集合作为参数
print(calc1({1,2,3,4,5,6}))
#2 定义求和函数
def calc2(*numbers):
sum = 0
# 接受到的参数全部自动组装成元祖
print(type(numbers))
# for循环遍历传递的列表或者元祖
for num in numbers:
sum = sum+num
#返回求和结果
return sum
# 调用calc2函数传递多个参数
print(calc2(1,1,1,1))
# 调用calc2函数传递列表作为参数,参数前加*
print(calc2(*[2,2,2,2]))
# 调用calc2函数元祖作为参数,参数前加*
print(calc2(*(1,2,3,4,5)))
# 调用calc2函数集合作为参数,参数前加*
print(calc2(*{1,2,3,4,5,6}))
5 关键字参数
# 关键词参数函数
# 更多信息必须以参数名=值得形式传递进去
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
person("jack", 20)
person(name = "jack", age = 20)#效果同上
person("jason", 19, city="beijing")
# person("kiki",18,"上海") #报错 关键词参数函数必须要以 参数名=值 的形式传递参数
6 命名关键字
def person(name, age, *, city, job):
print(name, age, city, job)
person("li", 22, city = "beijing",job="teacher")
# person("li", 22, city = "beijing") #参数少写报错
7 参数组合
# a b 位置参数
# c 默认值参数
# *args 可变参数
# **kw 关键字参数
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
# a b 位置参数
# c 默认值参数
# d 命名关键字参数
# **kw 关键字参数
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
8 总结
可变参数
- 定义 def 函数名(*arg)
- 使用 函数名(值1,值2,值3)
场景 需要传递参数,但是参数个数不确定
- 其他 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
关键词参数
- 定义 def 函数名(**kw)
- 使用 函数名(参数名1=值1, 参数名2=值2, 参数名3=值3)
场景 可以扩展函数的功能,用户注册时,除了name和age用户还希望提交的其他信息都可以通过关键词参数提交
- 其他 关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
- 注意
- 1 不写参数名报错
- 2 参数传递必须以参数名=值得形式传递
命名关键词参数
- 定义 def 函数名(*, 参数名1, 参数名2)
- 使用 函数名(参数名1=值1, 参数名2=值2)
场景 用户传递的其他信息受关键词约束
- 注意
- 1 不写参数名报错
- 2 少写算错
- 3 参数传递必须以参数名=值得形式传递