簡體   English   中英

傳遞函數函數以獲取NameError的timeit

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM