欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

5个有趣的Python小知识,结果令人意外

程序员文章站 2022-03-25 22:44:56
1 字符串驻留 如果上面例子返回True,但是下面例子为什么是False: 这与Cpython 编译优化相关,行为称为字符串驻留,但驻留的字符串中只包含字母,数字或下划线。 2 相同值的不可变对象 这是因为具有相同值的不可变对象在Python中始终具有相同的哈希值 由于存在哈希冲突,不同值的对象也可 ......
5个有趣的Python小知识,结果令人意外

 

1 字符串驻留

5个有趣的Python小知识,结果令人意外

 

如果上面例子返回true,但是下面例子为什么是false:

5个有趣的Python小知识,结果令人意外

 

这与cpython 编译优化相关,行为称为字符串驻留,但驻留的字符串中只包含字母,数字或下划线。

2 相同值的不可变对象

5个有趣的Python小知识,结果令人意外

 

这是因为具有相同值的不可变对象在python中始终具有相同的哈希值

由于存在哈希冲突,不同值的对象也可能具有相同的哈希值。

3 对象销毁顺序

创建一个类se:

5个有趣的Python小知识,结果令人意外

 

创建两个se实例,使用is判断:

5个有趣的Python小知识,结果令人意外

 

创建两个se实例,使用id判断:

5个有趣的Python小知识,结果令人意外

 

调用id函数, python 创建一个 se 类的实例,并使用id函数获得内存地址后,销毁内存丢弃这个对象。

当连续两次进行此操作, python会将相同的内存地址分配给第二个对象,所以两个对象的id值是相同的。

但是is行为却与之不同,通过打印顺序就可以看到。

4 充分认识for  

 

5个有趣的Python小知识,结果令人意外

 

为什么不是执行一次就退出?

按照for在python中的工作方式, i = 10 并不会影响循环。range(5)生成的下一个元素就被解包,并赋值给目标列表的变量i.


5 认识执行时机

 

5个有趣的Python小知识,结果令人意外

 

g为生成器,list(g)后返回[1,3,5],因为每个元素肯定至少都出现一次。所以这个结果这不足为奇。但是,请看下例:

5个有趣的Python小知识,结果令人意外

 

请问,list(g)等于多少?这不是和上面那个例子结果一样吗,结果也是[1,3,5],但是:

 

5个有趣的Python小知识,结果令人意外

 

这有些不可思议

原因在于:生成器表达式中, in 子句在声明时执行, 而条件子句则是在运行时执行。

所以代码:

5个有趣的Python小知识,结果令人意外

 

等价于:

5个有趣的Python小知识,结果令人意外

 

看明白吗?

以上就是五个python小特性,都很有意思,结果确实出乎意料。相信了解这些好玩的特性后,大家对python的认识更近一步了,恭喜大家。

如果你处于想学python或者正在学习python,python的教程不少了吧,但是是最新的吗?

说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的python教程。

 

5个有趣的Python小知识,结果令人意外

 

 

5个有趣的Python小知识,结果令人意外

 

 

以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!

获取方式,私信小编 “ 资料 ”,即可免费获取哦!