how to import __future__ for keyword-only argument of python 3.0?
The new syntax is discussed in PEP 3102 and it's indeed not valid in Python 2.x.
However you can obtain the keyword arguments from **kwargs
manually:
def f(a, *b, **kwargs):
if 'c' in kwargs:
pass
The other alternative is to upgrade to Python 3.x.
This feature of the Python 3 compiler has not been backported to Python 2.x.
There is no magic from __future__ import
switch to enable it, your only option is to upgrade to Python 3.x.
Your second function could instead be defined as:
def (a, *b, **kwargs):
c = kwargs.pop('c', 5)
to be Python 2 compatible.
Another way to emulate keyword-only-arguments is:
def f(a, *args, **kwds):
b = kwds.get('b', 42) # 42 being the default for b
if you wan't to make sure that no unsolicited arguments are passed you can use pop
instead:
def f(a, *args, **kwds):
b = kwds.pop('b', 42)
assert not kwds # after we've popped all keywords arguments kwds should be empty