所以Python是通過引用。總是。但是像整數,字符串和元組這樣的對象,即使傳入一個函數,也不能改變(因此它們被稱爲不可變的)。這是一個例子。爲什麼Python中有不可變對象?
def foo(i, l):
i = 5 # this creates a new variable which is also called i
l = [1, 2] # this changes the existing variable called l
i = 10
l = [1, 2, 3]
print(i)
# i = 10
print(l)
# l = [1, 2, 3]
foo(i, l)
print(i)
# i = 10 # variable i defined outside of function foo didn't change
print(l)
# l = [1, 2] # l is defined outside of function foo did change
所以你可以看到整數對象是不可變的,而列表對象是可變的。
甚至在Python中有不可變對象的原因是什麼?如果所有對象都是可變的,那麼像Python這樣的語言會有什麼優點和缺點?
不可變對象更快。 – TigerhawkT3
關於數字'1',你可能會改變什麼? –
@ TigerhawkT3我可以看到這是怎麼回事,但是即使一些常用的對象速度很慢,語言也可能具有範式優勢。 – bourbaki4481472