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

2022-10-08,,,,

 

1 字符串驻留

 

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

 

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

2 相同值的不可变对象

 

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

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

3 对象销毁顺序

创建一个类se:

 

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

 

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

 

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

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

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

4 充分认识for  

 

 

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

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

5 认识执行时机

 

 

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

 

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

 

 

这有些不可思议

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

所以代码:

 

等价于:

 

看明白吗?

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

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

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

 

 

 

 

 

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

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

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

下载本文的Word格式文档,以方便收藏与打印。