我以为我可以在 Python 2 中的函数调用中的可变长度位置参数之后使用命名参数,但我得到了SyntaxError
导入 python 类时。我正在使用以下“get”方法编写,例如:
class Foo(object):
def __init__(self):
print "You have created a Foo."
def get(self, *args, raw=False, vars=None):
print len(args)
print raw
print vars
错误看起来像:
def get(self, *args, raw=False, vars=None):
^
SyntaxError: invalid syntax
我希望能够通过多种方式调用该方法:
f = Foo()
f.get(arg1, arg2)
f.get(arg1, raw=True)
f.get(arg1, arg2, raw=True, vars=something)
etc.
它确实有效,但仅限于 Python 3。请参阅 PEP3102。从浏览“新增内容”文档来看,似乎没有 2.x 向后移植,所以你运气不好。您必须接受任何关键字参数(**kwargs
)并手动解析它。您可以使用d.get(k, default)
要么得到d[k]
or default
如果那不存在的话。从中删除参数kwargs
,例如在调用超类的方法之前,使用d.pop
.
请注意,在def get(self, *args, raw=False, vars=None):
, the raw=False
and vars=None
与关键字参数无关。这些是默认参数值。具有默认值的参数可以按位置传递,没有默认值的参数可以通过关键字传递:
def f(a=1): pass
f(2) # works, passing a positionally
def f(a): pass
f(a=2) # works, passing a by keyword
同样,仅关键字参数不需要具有默认值。即将到来之后*args
参数是将它们标记为仅关键字,而不是存在默认值:
def f(*args, a): pass
# a is a mandatory, keyword-only argument
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)