私はresize(h, w)
メソッドを定義したい、と私は2つの方法のいずれかでそれを呼び出すことができるようにしたい:前の引数に基づいてデフォルトの引数値を定義する方法は?
resize(x,y)
resize(x)
場合は、2番目の呼び出しでは、I y
がx
と等しくなるようにします。私は、メソッド定義でこれを行うことができますか私はresize(x,y=None)
ような何かをし、内部チェックする必要があります:
if y is None:
y = x
私はresize(h, w)
メソッドを定義したい、と私は2つの方法のいずれかでそれを呼び出すことができるようにしたい:前の引数に基づいてデフォルトの引数値を定義する方法は?
resize(x,y)
resize(x)
場合は、2番目の呼び出しでは、I y
がx
と等しくなるようにします。私は、メソッド定義でこれを行うことができますか私はresize(x,y=None)
ような何かをし、内部チェックする必要があります:
if y is None:
y = x
は、私は、メソッドの定義でこれを行うことができますメソッドの定義中に
番号がありませんがあります実行時にx
の値がどのような値を持つかを知る方法です。既定の引数は定義時に1回評価されますが、y
の動的値を保存する方法はありません。
または私は
resize(x,y=None)
ような何かをして正確に
の内側に確認する必要があります。これはPythonの共通のイディオムです。
Thx!しかし、私は関数に、他の引数を渡して、_resize(x、y = argv [1])_のように、Cのメインと幾分似ています。 – CIsForCookies
@CIsForCookiesあなたはそのようなことをすることができますが、メソッドが定義されている場合にのみ評価されます。呼び出しごとに再評価されることはありません。 –
None
がパラメータ値として有効な場合は、可変長引数機能(位置指定および/またはキーワード)を使用できます。位置のための使用例:この例では
def resize(x,*args):
if args:
if len(args)>1:
raise Exception("Too many arguments")
y = args[0]
else:
y = x
、あなたはx
に合格する必要がありますが、あなたは0以上の余分な位置引数を渡すことができます。もちろん、手動でチェックする必要があり、y
というキーワードが失われます。
はい、あなたの 'なし'コードが好ましい方法です。 –