python的函数参数

一、函数参数类型

python函数参数定义有以下四种类型:

1. 必选参数(位置参数)

调用函数时必须赋值的参数。
注:必须按照正确的数量和顺序依次传入函数。

def fun(x):
	return x

b = 1
print(fun(1)) # 1
print(fun()) # 报错

2.默认参数

传入函数时有初始值,在调用函数时若未赋值则使用初始默认值。

def fun(x=1):
	return x
print(fun()) # 1
print(fun(2)) # 2

3.不定长参数(可变参数)

不确定参数个数时,会分配给带*参数。
(1)*args
不定长的元组参数,参数格式化存储在一个元组中,长度没有限制。
必须位于普通参数和默认参数之后。

def fun(*args):
	return args

a = fun(1, 2, 3)
print(a)# 返回一个元组(1, 2, 3)

(2)**kwargs
不定长的字典参数。
必须位于参数列表最后面。

def fun(**kwargs):
	return kwargs

a = fuun(ai='爱', ni='你')
print(a) # 返回一个字典{'ai': '爱'. 'ni': '你'}

python3中,不定长元组参数可以在默认参数前,谁在前谁优先拿到值,但python2中不可行

# 不定参数在前(python3中新增特性)
def fun(*args, y=1):
	return y,x
a = fun(2, 1, 3, 4)
print(a) # y=1,x=(2, 1, 3, 4)

# 不定参数在后
def fun(y=1, *args):
	return y,x
a = fun(2, 1, 3, 4)
print(a) # y=2, args=(1, 3, 4)

4.关键字参数

使用关键字参数来确定传入的参数值。调用函数时带关键字后,不受实参传入顺序影响。

def fun(x, y, z):
	return x, y, z
a = fun(y=2, x=3, z=2)
print(a) # x=3,y=2,z=2

二、函数参数顺序

1.python2/3:(位置参数,默认参数,*args)

def fun(x, y=1, *args):
	return x, y, args
a = fun(1, 2, 3, 4, 5)
print(a) # x=1, y=2, args=(3, 4, 5)

2.python3: (位置参数,*args,默认参数)

def fun(x, *args, y=1):
	return x, args, y

a= fun(1, 2, 3, 4, 5)
print(a) # x=1, args= (2, 3, 4, 5) , y=1不变 

3.python2/3:*args,**kwargs与位置参数,默认参数混用情况

位置参数、*args、**kwargs三者顺序必须是位置参数、*args、**kwargs。

def fun(x, *args, **kwargs):
	return x, args, kwargs
a = fun(1, 2, 3, 4, y=5, a=6, b=7)
print(a) # x=1, args=(2, 3, 4), kwargs={'y': 5, 'a': 6, 'b': 7}

4.总结

python2参数顺序:
(必选参数,默认参数,不定长参数,关键字参数)
python2中,默认参数必须在不定长参数之前。

python3参数顺序:
(必选参数,默认参数,*args, **kwargs)
*python3中,args可以在默认参数前,谁在前谁优先拿到值。

python2与python3相同点:
(1)必选参数一定在默认参数之前;
(2)关键字参数在最后。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值