python中可选参数和可变参数_在python中,可以在命名参数之后传递可变参数吗?...

can you pass variadic arguments after named parameters?

python3.4.3:答案是肯定的。在

必须将变量放在函数定义的第一位def function(*args, bob, sally):

print(args, bob, sally)

values = [1, 2, 3, 4]

function(bob="Hi bob", sally="Hello sally", *values)

function(bob="Hi bob", *values, sally="Hello sally")

function(*values, bob="Hi bob", sally="Hello sally")

生产

^{pr2}$

如您所见,您可以调用函数,以您喜欢的任何顺序放置参数。在

请注意:

只有当您通过valuesiterable传递位置参数,并对其内容进行解压缩时,上面的第一个和第二个调用才有效。在

传递每个位置参数function(bob="Hi bob", sally="Hello sally", 1, 2, 3, 4)

function(bob="Hi bob", 1, 2, 3, 4, sally="Hello sally")

不可接受并产生SyntaxError: positional argument follows keyword argument

此外,由于您显式地引用实例方法,因此有必要检查如果function是这样一个方法,比如说类A,会发生什么class A():

def function(self, *args, bob, sally):

print(args, bob, sally)

values = [1, 2, 3, 4]

a=A()

a.function(bob="Hi bob", sally="Hello sally", *values)

a.function(*values, bob="Hi bob", sally="Hello sally")

a.function(bob="Hi bob", *values, sally="Hello sally")

仍然在工作和生产

^{pr2}$

Python2.7.6:答案是否定的>>> def function(*args, bob, sally):

File "", line 1

def function(*args, bob, sally):

^

SyntaxError: invalid syntax

另一种方法是给可变参数起一个名字values = {'p1': 1, 'p2': 2, 'p3': 3, 'p4': 4}

然后你可以定义def function(bob, sally, **kwargs):

print(kwargs['p1'])

用它来称呼它function(bob="Hi bob", sally="Hello sally", **values)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值