Skip to main content
 首页 » 编程设计

python之在函数性能中声明元组

2025年05月04日24虾米姐

我应该在函数内部还是全局声明一个元组?如果在内部,它会在每次函数调用时重新创建吗?

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 不必在每次调用时都加载和存储。