いくつかのオプションの引数を持つ関数を定義したいと思います。たとえば、A (必須) と B (オプション) としましょう。B が指定されていない場合は、A と同じ値を取りたいのですが、どうすればよいでしょうか?
私はこれを試しましたが、うまくいきません (名前 'B' は定義されていません):
def foo(A, B=A):
do_something()
引数の値が関数本体の前に代入されていないことを理解しています。
いくつかのオプションの引数を持つ関数を定義したいと思います。たとえば、A (必須) と B (オプション) としましょう。B が指定されていない場合は、A と同じ値を取りたいのですが、どうすればよいでしょうか?
私はこれを試しましたが、うまくいきません (名前 'B' は定義されていません):
def foo(A, B=A):
do_something()
引数の値が関数本体の前に代入されていないことを理解しています。
関数内でこれを行う必要があります。
あなたの元の機能を取る:
def foo(A, B=A):
do_something()
次のようなものを試してください:
def foo(A, B=None):
if B is None:
B = A
do_something()
重要なことは、関数の引数の関数のデフォルト値がその時点で与えられ、関数が定義されていることです。
の値で関数を呼び出すと、デフォルト値がすでに割り当てられており、関数定義に存在するためA
、遅すぎます。B
このようにできます。B
の値がある場合は、None
次から割り当てますA
def foo(A, B=None):
if B is None:
B = A
print 'A = %r' % A
print 'B = %r' % B