10

Python2.6 の次のコードは、構文エラーをスローします。

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

しかし、この構文は python3.0 で有効です。インタープリターを機能させるには、何をインポートすればよいか知りたいです。すなわち。from import __future__ ????

print function3.0をインポートする場合は、from __future__ import print_function

同様に、この定義は 2.6 では無効です。

def f(a,*b,c=5,**kwargs):

3.0では合法ですが

4

3 に答える 3

5

新しい構文はPEP 3102で議論されており、Python 2.x では有効ではありません。

**kwargsただし、手動でキーワード引数を取得できます。

def f(a, *b, **kwargs):
    if 'c' in kwargs:
        pass

もう 1 つの方法は、Python 3.x にアップグレードすることです。

于 2013-10-30T18:07:10.587 に答える
2

キーワードのみの引数をエミュレートする別の方法は次のとおりです。

def f(a, *args, **kwds):
    b = kwds.get('b', 42) # 42 being the default for b

非請求引数が渡されないことを確認したくない場合は、pop代わりに使用できます。

def f(a, *args, **kwds):
    b = kwds.pop('b', 42)

    assert not kwds # after we've popped all keywords arguments kwds should be empty
于 2016-02-03T09:27:18.413 に答える