(給Python開發者加星標,提升Python技能)
英文:Satwik Kansal,翻譯:暮晨
Python開發者整理自 GitHub
【導讀】:Python 是一個設計優美的解釋型高級語言,它提供了很多能讓程式設計師感到舒適的功能特性。但有的時候 Python 的一些輸出結果對於初學者來說似乎並不是那麼一目了然。
GitHub 有個倉庫收集 Python 中那些難以理解和鮮為人知的功能特性,並嘗試討論這些現象背後真正的原理!
雖然有些例子並不一定會讓你覺得「臥槽」(WTF),但它們依然有可能會告訴你一些你所不知道的 Python 有趣特性。我覺得這是一種學習程式語言內部原理的好辦法,而且我相信你也會從中獲得樂趣!
如果你是一位經驗比較豐富的 Python 程式設計師,你可以嘗試挑戰看是否能一次就找到例子的正確答案。你可能對其中的一些例子已經比較熟悉了,那這也許能喚起你當年踩這些坑時的甜蜜回憶。
for 循環怎麼會事兒?some_string = "wtf"
some_dict = {}
for i, some_dict[i] in enumerate(some_string):
passOutput:
>>> some_dict # 創建了索引字典.
{0: 'w', 1: 't', 2: 'f'}
說明:Python 語法[1] 中對 for 的定義是:
for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]
其中 exprlist 指分配目標. 這意味著對可迭代對象中的每一項都會執行類似 {exprlist} = {next_value} 的操作.
一個有趣的例子說明了這一點:
for i in range(4):
print(i)
i = 10Output:
0
1
2
3你可曾覺得這個循環只會運行一次?
說明:
由於循環在Python中工作方式, 賦值語句 i = 10 並不會影響迭代循環, 在每次迭代開始之前, 迭代器(這裡指 range(4)) 生成的下一個元素就被解包並賦值給目標列表的變量(這裡指 i)了.在每一次的迭代中, enumerate(some_string) 函數就生成一個新值 i (計數器增加) 並從 some_string 中獲取一個字符. 然後將字典 some_dict 鍵 i (剛剛分配的) 的值設為該字符. 本例中循環的展開可以簡化為:
>>> i, some_dict[i] = (0, 'w')
參考資料[1]
>>> i, some_dict[i] = (1, 't')
>>> i, some_dict[i] = (2, 'f')
>>> some_dictPython 語法: https://docs.python.org/3/reference/grammar.html
- EOF -
覺得本文對你有幫助?請分享給更多人
推薦關注「Python開發者」,提升Python技能
點讚和在看就是最大的支持❤️