関数のデフォルト引数は一度しか評価されない(python)
- 関数のデフォルト引数は__定義された時一度しか評価されない__ので注意が必要
- 以下の例だと、
get_num
が宣言された時のnums
(=0)がi
のデフォルト値になり、途中で更新されることはない
nums = 0
def get_num(i=nums):
print(i)
get_num() # 0
nums=10
get_num() # 0
get_num(34) # 34
- これはクラス内のメソッドでも同じで、クラス及びそのメソッドが宣言された時一度だけ評価される
nums = 0
class A:
def get_num(self,i=nums):
print(i)
a = A()
a.get_num() # 0
nums=10
b = A()
b.get_num() # 0
b.get_num(34) # 34