python方法传参_Python-函数传参

函数定义和调用

def语句定义函数

def 函数名(参数列表):

函数体(代码块)

【return 返回值】

python的函数没有return语句,会隐式返回一个None值。

定义中的参数列表成为形式参数,只是一种符号表达,简称形参。

函数的调用

调用方式,函数名加上小括号,括号内写上实参。

调用时写的参数是实际参数,简称实参。

函数参数

参数调用时传入的参数要和定义的参数个数相匹配。

位置参数

def(x,y,z)  调用使用f(1,2,4)

-----按照参数定义顺序传入实参

关键字参数

def(x,y,z) 调用使用f(x=1,y=2,z=3) 或者f(z=3,x=1,y=2)

----使用形参的名字来写入实参的方式,如果使用了形参名字,那么传参顺序就可以和定义顺序不同

传参要求位置参数必须在关键字参数之前传入,位置参数是按位置对应的。

函数参数默认值

定义时,在形参后跟一个值。

def add(x=4,y=5):

return x+y

def add(x=4,y):  #没有缺省值的需要放前面。

return x+y

可变参数

一个形参可以匹配任意个数。

位置参数的可变参数

def add(*nums):

sum=0

print(type(nums))

for x in nums:

sum=sum+x

return sum

print(add(3,6,9))

18

在形参前使用*表示该形参是可变参数,可以接收多个实参。

收集多个实参为一个tuple.

关键字参数的可变参数

1 def showconfig(**kwargs):2 for k,v inkwargs.items():3 print("{}={}".format(k,v))4 print(showconfig(x=2,y=3))

x=2

y=3

形参前使用**符号,表示可以接收多个关键字参数。

收集的实参名称和值组成1个字典。

可变参数的混合使用

总结

有位置可变参数和关键字可变参数;

位置可变参数在形参前使用*,关键字可变参数在形参前使用**;

位置可变参数和关键字可变参数都可以收集若干个实参,位置可变参数收集形成1个tuple,关键字可变参数收集形成1个dict;

混合使用参数的时候,可变参数要放到参数列表的最后。普通参数需要放到参数列表前面,位置可变餐宿要放到关键字可变参数之前。

keyword-only参数(python3加入)

如果在一个*后,或者一个位置可变参数后出现的普通参数,实际上不是普通的参数了,而是keyword-only参数。

1 def foo(*args,x):2 print(args)3 print(x)4 foo(3,5) #报错,foo() missing 1 required keyword-only argument: 'x',相当于args已经截获了所有的位置参数,

5 foo(3,5,7) #报错

6 foo(3,5,x=7)

def(**kwagrs,x) #报语法错误,可以理解为kwargs会截获所有与的关键字参数,就算是写了x=5,x也永远得不到这个值。

def fn(*,x,y)

print(x,y)

fn(x=5,y=6)

*之后,普通参数都变成了必须给出的keyword-ony参数。

可变参数和参数默认值

1 def fn(*args,x=5):2 print(x)3 print(args)4

5 fn()6 fn(6)7 fn(x=6)8 fn(1,2,3,x=10)

1 def fn(y,*args,x=5):2 print("x={},y={}".format(x,y))3 print(args)4

5 fn() #缺失位置参数y

6 fn(5)7 fn(x=6) #缺失位置参数y

8 fn(1,2,3,x=10)9 fn(y=17,2,3,x=10) #位置参数要放到关键字参数前面

10 fn(1,2,y=3,x=10) #重复给y赋值

1 def fn(x=5,**kwargs):2 print('x={}'.format(x))3 print(kwargs)4

5 fn(y=6,x=8)6 fn(5,y=7)

函数参数

参数规则

参数列表一般顺序是普通参数,缺省参数,可变位置参数,keyword-only参数(可带缺省值),可变关键字参数。

def fn(x,y,z=3,*args,m=4,n,**kwargs)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值