2016-12-26 6 views
-2

num2が変更されていないのに、text関数を呼び出すときにnum1が影響を受けるのはなぜですか?Pythonの可変/不変関数

def text(null1, null2) : 
    null1 += [7] 
    null2 = [8] 

num1 = [2,3] 
num2 = [4,5] 
text(num1,num2) 
print(num1) 
print(num2) 
+1

'a + = b'は' a = a + b'と同じではないためです。 – BrenBarn

+0

追加すると、同じリストに追加されますが、割り当てすると新しいリストが作成されます。 –

答えて

1
null1 += [7] 

リストnull1を変更します。あなたの場合は、リストnum1を引数として渡します。

しかし:

null2 = [8] 

は、新しいリストを作成します。関数の内部では、新しいローカル変数を作成します。したがって、num2は変更されません。