1.只运行1次?
# 只运行一次?
for i in range(4):
print(i)
i = 10
# 答案:运行4次,输出0123
# 原理:Python循环方式,迭代器range(4)提前被解包并赋值目标列表
2.Hash
# Hash
some_dict = {}
some_dict[5.5] = "Ruby"
some_dict[5.0] = "JavaScript"
some_dict[5] = "Python"
print(some_dict) # {5.5: 'Ruby', 5.0: 'Python'}
# 原理:Python字典检查键值是否相等、比较哈希值
3.最后返回
# 最后返回
def func_ss():
try:
return 'from_try'
finally:
return 'from_finally'
func_ss() # 'from_finally'
# 原理:try finally语句中try执行return、break、continue后,finally依旧会执行
4.非也非也
# 非也非也
print('Something' is not None) # True
print('Something' is (not None)) # False
# 原理:is not是一个单独的二元运算符 与分别使用is not不同
5.从有到无
# 从有到无
some_list = [1, 2, 3]
some_dict = {
"key_1": 1,
"key_2": 2,
"key_3": 3
}
some_list = some_list.append(4) # None
some_dict = some_dict.update({'key_4':4}) # None
# 原理:大多数修改序列、映射对象的方法
# 比如list.append、dict.update、list.sort等,都是原地修改并返回None
6.同人不同命
# 同人不同命
a = [1, 2, 3, 4]
b = a
a = a + [5, 6, 7, 8]
print(a) # [1, 2, 3, 4, 5, 6, 7, 8]
print(b) # [1, 2, 3, 4]
a = [1, 2, 3, 4]
b = a
a += [5, 6, 7, 8]
print(a) # [1, 2, 3, 4, 5, 6, 7, 8]
print(b) # [1, 2, 3, 4, 5, 6, 7, 8]
# 原理:生成新列表 并引用
# += 实际使用extend函数 仍指向同一列表
参考链接:那些让人直呼卧槽的Python代码!