在函数performan中声明元组

2024-09-27 21:27:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: 函数in声明returndef全局元组函数调用
2条回答

如果它是一个由常量值组成的元组,那么把它放在函数外部没有错,否则每次调用函数时都会创建它。你知道吗

为了使这个常量的精神范围接近它所使用的代码,请将它放在函数定义的正上方。你知道吗

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

def isBracket(s):
    return s in t

您可以使用^{}模块来反汇编函数字节码。您将看到不同之处:

>>> 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。你知道吗

相关问题 更多 >

    热门问题