2019.11.06
引数の既定値の動的生成 Python編
引数の既定値の動的生成 Python編
Pythonでは引数の既定値を動的に生成する簡単な方法がありません。
しかし、関数内部で処理をすることで、疑似的に実現可能です。
この記事ではその方法を紹介します。
理想的な動的生成
期待したい動作
関数を引数省略で起動するたびに、
ユーザー入力で既定値を動的に生成する。
コード
def add(p1 = input(), p2 = input()):
return p1 + p2;
if __name__ == "__main__":
print(add());
print(add());
実際に起こること
関数の定義時にinput()
関数が実行され、
その入力結果が以後すべての関数起動時に、
引数の既定値として固定される。
よって、期待された結果とならない。
代替策
コード
def add(p1 = "", p2 = ""):
if [p1, p2] == ["", ""]:
p1, p2 = input(), input();
return (p1 + p2);
if __name__ == "__main__":
print(add());
print(add());
実際に起こること
関数の起動ごとに、
引数省略時はinput()
関数が起動され、
事実上動的に引数の既定値が生成される。
まとめ
Pythonでは動的な引数の既定値生成ができません。
しかし、空文字やNoneなどを仮に与えておき、
内部でそれを動的に置き換えることはできます。
これを利用して、疑似的な引数既定値の
動的生成が可能です。