[英]Passing function of function to timeit getting NameError
我想用timeit計算三個類似的函數。 我已經編寫了這段代碼,但是當我將一個函數傳遞給測試函數時,我不明白發生了什么。
def f0(x, y, z):
#some code here
def f1(x, y, z):
#a slighty similar function
def f2(x, y, z):
#still another similar function
def test(name):
x=100
y=100
z=100
res=name(x,y,z)
if __name__ == '__main__':
import timeit
print(timeit.timeit("test(f0)", setup="from __main__ import test"))
我得到的錯誤是:
NameError: global name 'f0' is not defined
您需要導入測試中提到的所有全局名稱:
print(timeit.timeit("test(f0)", setup="from __main__ import test, f0"))
線路test(f0)
需要查找f0
,而不僅僅是test()
。
你也必須導入f0
,就像這樣
print(timeit.timeit("test(f0)", setup="from __main__ import test, f0"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.