【发布时间】:2011-07-02 11:13:21
【问题描述】:
这是一个简单程序的大纲
# some pre-defined constants
A = 1
B = 2
# function that does something critical
def foo(num1, num2):
# do something
# main program.... do something to A and B
for i in range(20):
# do something to A and B
# and update A and B during each iteration
import timeit
t = timeit.Timer(stmt="foo(num1,num2)")
print t.timeit(5)
我只是不断收到“未定义全局名称 foo”..... 谁可以帮我这个事?谢谢!
【问题讨论】:
-
首先,这里的缩进令人困惑。看起来
foo的定义范围与t不同... -
嗨。我修复了缩进。现在看起来好多了吗? :] 谢谢。
-
timeit 对于单行来说是可以的,但对于其他更好的方法,请检查此方法stackoverflow.com/questions/5478351/…
-
在python3中有一个非常简单的解决方案,你可以通过在timeit调用中添加
globals=globals()参数在全局命名空间中运行表达式:stackoverflow.com/a/51913199/2925963