为什么我问这个问题,因为我总是担心这种风格的代码
def callsomething(x):
if x in (3,4,5,6):
#do something
如果函数 callsomething 被频繁调用,(3,4,5,6) 是否浪费了太多的空间和时间?在 C 之类的某些语言中,它可能会像常量一样放入数据段中,但在 python 中,我不会知道它是如何工作的,所以我倾向于编写这样的代码
checktypes = (3,4,5,6)#cache it
def callsomething(x):
global checktypes
if x in checktypes:
#do something
但是经过测试我发现这种方式会使程序变慢,在更复杂的情况下,代码会是这样的:
types = (3,4,5,6)
def callsomething(x):
global types
for t in types:
t += x
#do something
仍然比这慢
def callsomething(x):
for t in (3+x,4+x,5+x,6+x):
#do something
在这种情况下,程序必须创建 (3+x,4+x,5+x,6+x),对吗?但它仍然比第一个版本快,不过不会太多。
我知道 python 中的全局 var 访问会减慢程序的速度,但它与创建结构相比如何?