Python では、関数を定義するときにデフォルトの引数値を設定できました。ただし、デフォルトの引数値は一度だけ評価されます。したがって、関数内のそのような引数の値を変更すると、変更は後の呼び出し中に蓄積されます。
これは、関数が状態を保持することを意味します。これはオブジェクト指向の考え方と一致しておらず、多くの混乱を招くでしょう。
設計が悪いと思います。あなたはそう思いますか?
Python では、関数を定義するときにデフォルトの引数値を設定できました。ただし、デフォルトの引数値は一度だけ評価されます。したがって、関数内のそのような引数の値を変更すると、変更は後の呼び出し中に蓄積されます。
これは、関数が状態を保持することを意味します。これはオブジェクト指向の考え方と一致しておらず、多くの混乱を招くでしょう。
設計が悪いと思います。あなたはそう思いますか?
いいえ、ツールを理解する必要があるというだけです。あなたの方法では、隠しプロシージャを一時的に保存しdef
、関数が呼び出されるたびに評価する必要があります。Python では、「明示的は暗黙的よりも優れている」というのが (主張されている) 選択の設計原則です。
これは議論のためのサイトではなく、Q&A をプログラミングするためのサイトであるため、正しく行う方法は次のとおりです。
それ以外の
def funct(array = []):
書きます
def funct(array = None):
if array is None:
array = []
同じ「不満」は、Ruby、BTW (およびおそらくデフォルトの引数値を持つ他の言語) にも当てはまり、Python に限定されません。