簡體   English   中英

在函數性能中聲明元組

[英]Declare tuple inside a function performance

我應該在函數內部還是全局聲明一個元組? 如果在內部,是否會在每個函數調用時重新創建?

def isBracket(s):
    t = ('a','b','c','d')
    return s in t

您可以使用dis模塊反匯編功能字節碼。 您將看到區別:

>>> import dis
>>> def isBracket(s):
...     t = ('a','b','c','d')
...     return s in t
... 
>>> dis.dis(isBracket)
  2           0 LOAD_CONST               5 (('a', 'b', 'c', 'd'))
              3 STORE_FAST               1 (t)

  3           6 LOAD_FAST                0 (s)
              9 LOAD_FAST                1 (t)
             12 COMPARE_OP               6 (in)
             15 RETURN_VALUE        
>>> t = ('a','b','c','d')
>>> def isBracket(s):
...     return s in t
... 
>>> dis.dis(isBracket)
  2           0 LOAD_FAST                0 (s)
              3 LOAD_GLOBAL              0 (t)
              6 COMPARE_OP               6 (in)
              9 RETURN_VALUE

您可以看到第二個版本的改進:不必每次調用都加載和存儲tuple

如果它是常量值的元組,則將函數放在外面沒有任何問題,因為否則它將在每次調用函數時創建。

為了使此常量的精神范圍接近所使用的代碼,請將其放在函數定義的上方。

t = ('a','b','c','d')

def isBracket(s):
    return s in t

暫無
暫無

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

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