我知道这个问题有点愚蠢,也许它只是编写代码的一部分,但似乎定义简单的函数真的会严重损害性能......我尝试过这个简单的测试:
def make_legal_foo_string(x):
return "This is a foo string: " + str(x)
def sum_up_to(x):
return x*(x+1)/2
def foo(x):
return [make_legal_foo_string(x),sum_up_to(x),x+1]
def bar(x):
return ''.join([str(foo(x))," -- bar !! "])
Run Code Online (Sandbox Code Playgroud)
这是非常好的风格,使代码清晰,但它的速度可能只是字面上的三倍.对于可能产生副作用的函数来说,这是不可避免的,但实际上几乎无足轻重地定义一些函数,这些函数每次出现时都应该用代码行替换,将源代码转换为只编译.同样我认为对于幻数,它不需要花费很多时间从内存中读取,但是如果它们不应该被更改那么为什么不在代码编译之前用文字替换'magic'的每个实例?