函数的使用

函数的使用分为定义阶段与调用阶段,定义函数时中只检测语法,不执行函数体代码,函数名加括号即函数的调用,只有调用函数时才会执行函数体代码

1.函数调用与返回值

return 是一个函数结束的标志,函数内可以有多个return,但只执行一次函数就结束了,并把return后定义
的值作为本次调用的结果返回

形参的顺序:位置形参,默认形参,args,命名关键字形参,**kwargs 实参的顺序与形参对应,顺序也是相同 位置>默认>>关键>**

1.1可变长度的位置参数

如果最后一个形参名前加*号,那么在调用函数时,溢出的位置实参,都会被接收,以元组的形式保存下来赋值组该形参。

def foo(x,y,z=1,*args):
	print(x)
	print(y)
	print(z)
	print(args)
foo(1,2,3,4,5,6,7,8)    
1
2
3   #默认参数被赋值3
(4,5,6,7,8)  #多余的位置实参4,5,6,7,8被*接收,赋值组args,得到args=(4,5,6,7,8)

1.2可变长度的关键字参数

如果在最后一个形参名前加**号,那么在调用函数时,溢出的关键字参数,都会被接收,以字典的形式保存下来赋值组该形参。

def foo(x,**kwargs):
	print(x)
	print(kwargs)

foo(y=2,x=1,z=3)
1
{'z':3,'y':2}
  • 可以用在实参中,实参中带*,先将*后的值打散成位置实参
def func(x,y,z):
	print(x,y,z)
func(*[11,22,33])   #打散成 func(11,22,33)
>>>11 22  33
  • 可以用在实参中(后跟的只能是字典),实参中带,先将后的内容打散成关键字实参
def func(x,y,z):
	print(x,y,z)

func(**{'x':1,'y':2,'z':3})  #这里会先将**后的字典打散成关键字实参,这里打散成的关键字实参必须与形参中的个数相同,多一个不行,少一个也不行
1  2  3

  • 和 **都可以放在形参中,也可以放在实参中,在混用的时候,args必须在**kwargs之前
def func(*args,**kwargs): #*args对应的实参中的位置实参,**kwargs对应实参中的关键字参实参
	print(args)
	print(kwargs)
func(1,2,3,4,5,x=1,y=2,z=3)

2.命名关键字参数(了解)

原文地址:https://www.cnblogs.com/xiaoxuanworking/p/14350844.html