【python初学者向け】python初学者が陥りがちな失敗を紹介します

今日はpython初学者がやってしまいがちがミスについて紹介します。

思わぬミスってデバッグしても気付きづらいので意識が大切だと思っています!

versions
  • python 3.9.4

関数を用意しよう

def init_list(str, arr=[]):
    arr.append(str)
    print(arr)

初期値で空のlistをセットする関数を用意しました。

ここで気付いた方はとても素晴らしいですね!
もうこの記事読まなくて大丈夫です。。。

関数を実行してみよう

def init_list(str, arr=[]):
    arr.append(str)
    print(arr)

init_list('abc')

これは思い通りの挙動が確認できたかと思います。

では、以下はどうでしょうか?

def init_list(str, arr=[]):
    arr.append(str)
    print(arr)

init_list('abc')
init_list('def')
['abc']
['abc', 'def']

「おやっ」と思いましたか?

pythonは関数の実行時に初期値がセットされるのではなく、関数の定義時に初期値がセットされます。

そのため、上記のような実行結果になってしまいます。

正確には以下のようなコードを書きます。

def init_list(str):
    arr = []
    arr.append(str)
    print(arr)

再度同じように実行してみましょう!

可読性を上げるために以下のような書き方をする時もあるようです。

def init_list(str, arr=None):
    if arr is None:
        arr = []
    arr.append(str)
    print(arr)

可読性を重視することは非常に重要ですね!

まとめ

今日はpython初学者のよくある失敗コードを紹介しました。

皆さんの学習に役立ててください。

参考

入門 python3