5个有趣的Python小知识,结果令人意外
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 子句在声明时执行,