繁体   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