Pythonでは、関数にオブジェクトを渡すとき、そのオブジェクトへの参照が渡されます。これは、他の言語では値渡し(コピー)が行われる場面で、Pythonでは参照渡しが行われるということを意味します。
例えば、次のようなコードを考えてみましょう。
def sorting(x):
A = x # Passed by reference?
A.sort()
def testScope():
L = [5,4,3,2,1]
sorting(L) # Passed by reference?
return L
print(testScope())
このコードでは、sorting
関数にリストL
を渡しています。そして、sorting
関数内でリストA
にL
を代入し、A.sort()
を実行しています。この結果、元のリストL
もソートされることになります。
これは、sorting
関数にL
を渡すとき、L
のコピーではなくL
への参照が渡されるためです。そのため、sorting
関数内でA
をソートすると、元のリストL
もソートされることになります。
このように、Pythonでは関数にオブジェクトを渡すときは参照渡しが行われ、関数内でオブジェクトを変更すると、その変更は元のオブジェクトにも反映されます。これは、Pythonの重要な特性の一つであり、他の言語との違いの一つでもあります。