繁体   English   中英

为什么这不可能在Python中?

[英]Why isn't this possible in Python?

def myfunc(a,b=2):
    print("Called with", a, b)
    return
p1 = functools.partial(myfunc, b=4)
p1("foobar", 4)

为什么运行最后一行时会出现语法错误? myfunc("foobar", 4)如果我这样做: myfunc("foobar", 4)

'partial'已将'b'设为4; 如果你想要另一个值,你应该明确地设置参数'b':

>>> p1("foobar")
('Called with', 'foobar', 4)

>>> p1("foobar", b=5)
('Called with', 'foobar', 5)

因为你在functools.partial调用中提供了b 你的电话应该是这样的:

p1("foobar")

或者你可以在p1 = functools.partial(myfunc, b=4)摆脱b=4 ,并使它像:

p1 = functools.partial(myfunc)

我认为这是因为python允许您以任何顺序使用可选参数。 使用更多静态类型语言时,通常会在函数/方法中定义的顺序中使用可选参数。 所以,例如,在python中这是合法的:

def myfunc(a=1,b=2,c=3):
    print a,b,c

myfunc(c=99, b=13, a=12)

因为您可以按任何顺序指定可选参数,我认为python显然需要知道哪些参数分配给哪些本地函数变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM