所以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