2024-09-27 21:27:58 发布
网友
我应该在函数内声明元组还是全局声明元组?如果在内部,是否会在每次函数调用时重新创建它?你知道吗
def isBracket(s): t = ('a','b','c','d') return s in t
如果它是一个由常量值组成的元组,那么把它放在函数外部没有错,否则每次调用函数时都会创建它。你知道吗
为了使这个常量的精神范围接近它所使用的代码,请将它放在函数定义的正上方。你知道吗
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。你知道吗
tuple
如果它是一个由常量值组成的元组,那么把它放在函数外部没有错,否则每次调用函数时都会创建它。你知道吗
为了使这个常量的精神范围接近它所使用的代码,请将它放在函数定义的正上方。你知道吗
您可以使用^{} 模块来反汇编函数字节码。您将看到不同之处:
您可以看到第二个版本的改进:不必每次调用都加载和存储
tuple
。你知道吗相关问题 更多 >
编程相关推荐