# 函数参数不需要定义数据类型 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‘} # 关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值
原文:https://www.cnblogs.com/babysteps/p/python_note_9.html