Python學習筆記:一些出乎意料的程式碼
阿新 • • 發佈:2022-03-18
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程式碼!