It does work, but only in Python 3. See PEP 3102. From glancing over the "what's new" documents, it seems that there is no 2.x backport, so you're out of luck. You'll have to accept any keyword arguments (**kwargs
) and manually parse it. You can use d.get(k, default)
to either get d[k]
or default
if that's not there. To remove an argument from kwargs
, e.g. before calling a super class' method, use d.pop
.
Note that in def get(self, *args, raw=False, vars=None):
, the raw=False
and vars=None
have nothing to do with keyword arguments. Those are default argument values. Arguments with a default value may be passed positionally, and arguments without a default value may be passed by keyword:
def f(a=1): pass
f(2) # works, passing a positionally
def f(a): pass
f(a=2) # works, passing a by keyword
Similarly, keyword-only arguments are not required to have a default value. Coming after the *args
argument is what marks them as keyword-only, not the presence of a default value:
def f(*args, a): pass
# a is a mandatory, keyword-only argument
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…