如何为python 3.0的仅关键字参数导入__future__?

bra*_*orm 8 python variadic-functions python-import python-3.x

python2.6中的以下代码抛出语法错误

>>> def f(a,*args,c):
  File "<stdin>", line 1
    def f(a,*args,c):
                  ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

但是这种语法在python3.0中是有效的.我想知道我应该在我的解释器中导入什么才能使它工作.即.from import __future__ ????

对于print function3.0的导入,我会这样做from __future__ import print_function

同样,这种定义在2.6中无效

def f(a,*b,c=5,**kwargs):
Run Code Online (Sandbox Code Playgroud)

虽然它在3.0中是合法的

Mar*_*ers 19

Python的3编译器的这一功能已被移植到Python 2.x的

没有魔术from __future__ import开关来启用它,你唯一的选择就是升级到Python 3.x.

您的第二个功能可以定义为:

def (a, *b, **kwargs):
   c = kwargs.pop('c', 5)
Run Code Online (Sandbox Code Playgroud)

兼容Python 2.


Sim*_*ser 5

PEP 3102中讨论了新语法,它在Python 2.x中确实无效.

但是,您可以**kwargs手动获取关键字参数:

def f(a, *b, **kwargs):
    if 'c' in kwargs:
        pass
Run Code Online (Sandbox Code Playgroud)

另一种方法是升级到Python 3.x.