1.Python在字符串中不能直接赋值
如
s = 'Hello'
s[1] = 'E'
报错!
如何改它呢?曲线救国
s = list(s)
s[1] = 'E'
print(str(s)) #无效,还是一个字符列表
s = ''.join(s)
#输出
#HEllo
#这样才修改成功
2.在Python中,经常有变量的“别名”现象
x = 1
y = 1
z = 2
id(x)
id(y)
id(z)
#输出
495572016
495572016
495572032
可以看出,Python中的赋值只是让它指向不同的常量地址,铁打的常量流水的变量,这和
C++
中的区别是很大的
并不是去改变变量指向的地址空间的内容,而是改变变量指向的地址
做一个比喻:Python中修改变量是搬家,而C++
中的修改变量就是我们熟悉的装修
基于这个原理,++
操作符在Python中被禁用
3.2
可以解释为什么Python不能按引用传递
def f(x):
print(id(x))
x = x + 1
print(id(x))
x = 2
print(id(x))
f(x)
print(id(x))
输出
1721458944
1721458944
1721458976
1721458944
-
Python**本来就是**按引用传递
按引用传递的实质:变量指向的地址不变,但是在C++
中指向地址空间的内容是可以改变的,但是在Python中不能改变内容,只能改变地址,所以在Python中没办法做到C++
中传引用的效果