1、省略号也是对象
这有什么用呢?没什么实际用处,可以替代pass做占位符
```
print(type(...))
bool(...)
```
2、增量赋值的性能更好
下面两行其实在效果上是等价的,但在性能上,第二行高于第一行 这是因为+=的魔法方法是__iadd__ ,而+的魔法方法是__add__, 这两个方法的实现是不一样的,有兴趣的可以自己去了解
a = 1; a += 1
b = 1; b = b + 1
3、索引越界
报错还是输出什么?
list1 = [1, 2, 3]
print(list1[5:])
4、for写一个死循环
for i in iter(int, 1):
pass
iter的用法除了将序列变为迭代器,还能接受两个参数,一个是callable参数,另一个是sentinel参数,当这个callable返回的是sentinel,则迭代停止 而int是一个内建方法,只会返回0
5、intern机制
s1 = 'hello'
s2 = 'hello'
s1 is s2
同样的字符串对象只保留一份,这就是intern机制,但当字符串有除ASCII以外的字符或长度超过20个字符时,不启用intern机制
6、_ 的使用
当要使用一些没有意义的变量时,一般会用_代替,比较常见的循环,比如 for _ in range(10) 我们只在乎循环次数,而不在乎循环变量
7、for else和try else
if else都知道怎么使用,那for else和try else呢
8、空字符串
想想下面的结果又觉得没有错,就是不对劲
print('' in 'aabb')
print('aabb'.count(''))
9、---
python允许不加括号,因为并不会产生歧义,但建议别这样写代码,没什么意义,还不好阅读,当然你非要把3写成------3也不报错
print(--3)
print(6---+-------------------4)
10、字典有序
字典的无序性一直是教学的一个知识点,但Python3.6之后,字典其实是有序的,但官方是这样解释的:这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来改变,因为考虑到向旧版本兼容的问题)。不过在Python3.7中,字典有序已经变成语言特性了。因为更节省内存,而带来的‘副作用’不过是字典的有序化。
原文链接(出处):https://mp.weixin.qq.com/s/Er7e91UOEJ1sucbFN_n_-w