私は最近これに出くわしました:
x = [1,2,3]
def change_1(x):
x = x.remove(x[0])
return x
結果は次のとおりです。
>>> change_1(x)
>>> x
[2, 3]
関数の内部に入るものは何でも外部の変数に影響を与えないと思っていたので、この動作は驚くべきものだと思います。さらに、基本的に同じことを行う例を作成しましたが、使用しませんremove
:
x = [1,2,3]
def change_2(x):
x = x[1:]
return x
結果は次のとおりです。
>>> change_2(x)
[2, 3] # Also the output prints out here not sure why this is
>>> x
[1, 2, 3]
そして、期待どおりの結果が得られます。関数は x を変更しません。
したがって、それremove
は効果のある特定のものでなければなりません。ここで何が起こっているのですか?