【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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值