簡體   English   中英

初始化空Python數據結構

[英]Initializing empty Python data structures

在可用於創建空Python列表/詞典的兩種語法形式之間是否存在任何實際差異,即

l = list()
l = []

和:

d = dict()
d = {}

我想知道使用一個是否優於另一個。

函數形式在運行時調用構造函數以返回新實例,而文字形式使編譯器在編譯時“創建”它(實際上,發出導致新對象的字節碼)。 如果(由於某種原因)類已經在本地反彈到不同類型,前者可能很有用。

>>> def f():
...   []
...   list()
...   {}
...   dict()
... 
>>> dis.dis(f)
  2           0 BUILD_LIST               0
              3 POP_TOP             

  3           4 LOAD_GLOBAL              0 (list)
              7 CALL_FUNCTION            0
             10 POP_TOP             

  4          11 BUILD_MAP                0
             14 POP_TOP             

  5          15 LOAD_GLOBAL              1 (dict)
             18 CALL_FUNCTION            0
             21 POP_TOP             
             22 LOAD_CONST               0 (None)
             25 RETURN_VALUE        

主要區別在於一個表單包含名稱查找,而另一個表單不包括。 說明這種差異的示例:

def list():
    return {}

print []
print list()

版畫

[]
{}

當然你絕對不應該做這樣的廢話。

我的直覺告訴我,只要你保持一致,兩者都是可以接受的。

我不知道有什么不同,主要是風格偏好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM