為什麼Python沒有用於屬性賦值的“with”語句?


Python 確實有 with 語句。它包裝了程式碼塊的執行,在進入和退出程式碼塊時呼叫程式碼。

with obj: a = 1 total = total + 1

上面的 a = 1 等價於以下內容:

obj.a = 1

並且,total = total + 1 等價於:

obj.total = obj.total + 1

程式語言使用靜態或動態型別。

靜態型別

靜態指的是程式的執行,其中物件的型別在編譯時確定/已知,即當編譯器執行程式碼時,它知道物件所屬的物件或類的型別。

像 Object Pascal、Delphi 和 C++ 這樣的程式語言使用靜態型別,因此可以明確地知道正在賦值給哪個成員。這是靜態型別的主要優點——編譯器始終在編譯時知道每個變數的作用域。

動態型別

在動態型別中,物件的型別在執行時確定。Python 使用動態型別。無法預先知道執行時將引用哪個屬性。

讓我們來看一個例子:

def demo(x): with k: print(x)

這段程式碼假設 k 必須有一個名為 x 的成員屬性。但是,在 Python 中沒有任何內容告訴直譯器這一點。

with 語句的主要好處在 Python 中可以透過賦值輕鬆實現:

function(args).mydict[index][index].k = 21 function(args).mydict[index][index].l = 42 function(args).mydict[index][index].m = 63

上面也可以透過以下方式實現:

ref = function(args).mydict[index][index] ref.k = 21 ref.l = 42 ref.m = 63

更新於:2022年9月20日

140 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告