2

いくつかのオプションの引数を持つ関数を定義したいと思います。たとえば、A (必須) と B (オプション) としましょう。B が指定されていない場合は、A と同じ値を取りたいのですが、どうすればよいでしょうか?

私はこれを試しましたが、うまくいきません (名前 'B' は定義されていません):

def foo(A, B=A):
    do_something()

引数の値が関数本体の前に代入されていないことを理解しています。

4

2 に答える 2

7

関数内でこれを行う必要があります。

あなたの元の機能を取る:

def foo(A, B=A):
    do_something()

次のようなものを試してください:

def foo(A, B=None):
    if B is None:
        B = A
    do_something()

重要なことは、関数の引数の関数のデフォルト値がその時点で与えられ、関数が定義されていることです。

の値で関数を呼び出すと、デフォルト値がすでに割り当てられており、関数定義に存在するためA、遅すぎます。B

于 2016-01-27T00:37:43.513 に答える
1

このようにできます。Bの値がある場合は、None次から割り当てますA

def foo(A, B=None):
    if B is None:
        B = A

    print 'A = %r' % A
    print 'B = %r' % B
于 2016-01-27T00:38:00.733 に答える