python 函数参数:简明总结

1. 位置参数(必选参数)
2. 默认参数
3. 可变参数( args)
4. 关键字参数 (**kw)
5. 命名关键字参数 (
, named_kw)

可变参数:
def func(*args):
    type(args) == tuple

func(1,2,3,4)
mytuple = (1,2,3)
func(*mytuple)

允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
若多个参数已经组合成tuple,则可使用 *mytulple 传给可变参数args

关键字参数
def func(**kw):
    type(kw) == dict
    kw['city'] == 'Shanghai'
    kw['code'] == 30
    kw['pc'] == 200030

func(city='Shanghai', code=30, pc=200030)
mydict = {city='Shanghai', code=30, pc=200030}
func(**mydict)

允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。键为指定的参数名的字符串,值为指定的参数名的值。

命名关键字参数

对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数。如果要限制关键字参数的名字,就可以用命名关键字参数。

def func(arg1, *, name1, name2):
	pass
def func(arg1, *agrs, name1, name2):
	pass

func(1, name1='Bob', name2='Jan')

由 * 或 可变参数(*args)隔开,后面的参数都是命名关键字参数。
调用时,必须写明参数名。

组合使用5种参数

参数定义的顺序必须是:
必选参数 > 默认参数 > 可变参数 > 命名关键字参数 > 关键字参数。

def func(a, b, c=0, *args, namedkw1, namedkw2, **kw):
	pass

def func(a, b, c=0, *, namedkw1, **kw):
	pass
  • 不按顺序提供部分默认参数时,需要把参数名写上。
  • 命名关键字参数必须提供参数名。
  • 命名关键字参数可有默认值,若无默认值则必须提供值。
  • 可选参数,关键字参数可不提供值。

对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。
args元组会按顺序赋值给(必选,默认,可变)参数。先满足前二者数量,多余的0个或多个传给可变参数。
kw字典会按key传递参数给(命名关键字参数,关键字参数)。key中必须有 无默认值的命名关键字参数。

mytuple = (1, 2, 3, 4, 5, 6)
mydict = {name1:value1, name2:value2}
func(*mytuple, **mydict)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值