The following code in python2.6 throws syntax error
>>> def f(a,*args,c):
File "<stdin>", line 1
def f(a,*args,c):
^
SyntaxError: invalid syntax
but this syntax is valid in python3.0. I would like to know what should I import in my interpreter to make it work.
ie. from import __future__ ????
for importing print function
of 3.0, I would do from __future__ import print_function
similarly this defination is invalid in 2.6
def f(a,*b,c=5,**kwargs):
while it is legal in 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:The other alternative is to upgrade to Python 3.x.
Another way to emulate keyword-only-arguments is:
if you wan't to make sure that no unsolicited arguments are passed you can use
pop
instead: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:
to be Python 2 compatible.