【Hello Python World】Class Notes of Week 6

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++中传引用的效果

4.这样做的好处:可以做到动态数据类型

5.这也可以让人理解为什么字典、列表不可以作为key:不可变的数据类型才可以当做key

猜你喜欢

转载自blog.csdn.net/u013159381/article/details/79902230