- # 函数参数不需要定义数据类型
- def f(a,b)
- # 1. 默认参数
- # 参数可定义默认值, 默认参数必须指向不可变参数
- def f(a,b=1)
- def f(a, *b=1) # 会报错
- # 2. 可变参数
- # *b 为可变参数, b 接收的是一个 tuple, 可以为空
- # 调用可变参数时为空的情况
- def func_args(a,*b):
- print(a,b)
- func_args(1)
- # 1 ()
- # 调用可变参数时传入变量的情况
- def func_args(a,*b):
- print(a,b)
- c=[1,2,3,4]
- func_args(1,c)
- # 1 ([1, 2, 3, 4],)
- # 注意: list 变量 c 作为可变参数 b 的第一个元素输出
- # 如果要使 c(可以是 tuple 或 list 但输出都是 tuple)作为元组本身输出, 需传入 * c
- def func_args(a,*b):
- print(a,b)
- c=[1,2,3,4] # c=(1,2,3,4)也可以
- func_args(1,*c)
- # 1 (1, 2, 3, 4)
- # 可变参数后只能跟关键字参数 (即调用时需指定参数名) 或者默认参数
- # 可变参数跟关键字参数的情况
- def func_args(a,*b,c):
- print(a,b,c)
- func_args(1,c=1)
- # 1 () 1
- # 可变参数跟默认参数的情况
- def func_args(a,*b,c=1):
- print(a,b,c)
- func_args(1)
- # 1 () 1
- # 3. 关键字参数
- # **c 是关键字参数, c 接收的是一个 dict
- # 调用示例
- def func_args(a, **c):
- print(a, c)
- func_args(1, city='shanghai')
- d={'city':'shanghai'}
- func_args(1, **d)
- # 1 {'city':'shanghai'}
- # 关键字参数是为了限制调用者可以传入的参数名, 同时可以提供默认值
来源: http://www.bubuko.com/infodetail-3044449.html