函数的形参和实参
def func(s): i=0 for k in s i+=1 return i print(func("帅哥"))
(1)形参与实参
S: 形参,用来接收调用函数中的实参
帅哥: 实参,调用函数会将实参传入到形参
注意:有几个形参就要对应几个实参,默认参数除外。
(2)形参定义规则
(1)形参可以传入如下几种参数:
(1) 位置参数: 如 func(a,b,c)
(2) 默认参数: 如 func(a, b="帅哥") ,其中b="帅哥"为默认参数,当有默认参数时,调用函数可以不传入默认参数对应的实参位置,不传入,默认为默认参数值,传入则会覆盖掉默认参数值。
def sum(a,b=1): res=a+b return res ret=sum(1,2) print(ret) #输出:3,因为将1,2分别赋值给a,b
def sum(a,b=1): res=a+b return res ret=sum(1) print(ret) #输出:2,因为将1赋值给a,b为默认参数没有传入实参还是为1
(3) 关键字参数: 如 func(a="帅哥,b="然然")
(4) 动态参数:
1.*args : 接收多个位置参数,返回的是元祖形式
2. **kwargs: 接收多个关键字参数,返回的是字典形式
def func(*args): return (*args) print(func(1,2,3)) #输出:(1,2,3)
def func(*kwargs): return (*kwargs) print(func(a="帅哥",b="然然")) #输出:{"a":"帅哥","b":"然然"}
(2)形参传入参数的顺序
func(位置参数 , *args, 默认参数 , **kwargs)
(3)实参的定义规则
(1)实参可以传入如下几种参数
1.位置参数
2.关键字参数
3.混合参数:顺序必须是,位置参数,关键字参数,与形参顺序一致
(4)动态参数传入的另一种表达形式
(1)*args 对列表加上一个 * 号,将列表打散,用形参接收重组
def func(*args): print(args) func(1,2,3) l=[1,2,3] func(*l)
# 输出:(1,2,3) (1,2,,3)
(2) **kwargs 用** 打散字典用形参接收重组
def func(**kwargs): print(kwargs) func(a="帅哥",b="小伙") dict={'a':"帅哥",'b':"小伙"} func(**l) # 输出:{'a':"帅哥",'b':"小伙"} # {'a':"帅哥",'b':"小伙"}