Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在带参数的函数中使用timeit模块_Python_Timeit - Fatal编程技术网

Python 在带参数的函数中使用timeit模块

Python 在带参数的函数中使用timeit模块,python,timeit,Python,Timeit,来自 但是如何使用参数调用函数,例如,这样的函数: def test(some_object): """Stupid test function""" L = [] for i in range(100): L.append(some_object) 呃,如果我没弄错你的问题,你只是在找那个 anobj = 42 # where it can be whatever object def test(foo): pass # do somethin

来自

但是如何使用参数调用函数,例如,这样的函数:

def test(some_object):
    """Stupid test function"""
    L = []
    for i in range(100):
        L.append(some_object)

呃,如果我没弄错你的问题,你只是在找那个

anobj = 42 # where it can be whatever object
def test(foo):
    pass # do something with foo

if __name__ == '__main__':
    import timeit
    print(timeit.timeit("test(anobj)", setup="from __main__ import test, anobj"))
您要使用:

def main():
    import timeit
    print(timeit.timeit("test(some_object)")) # don't need to use the 'setup'

def test(my_object):
    lst = []
    for i in range(100):
        lst.append(my_object)

if __name__ == '__main__':
    main()

这里有一个在这种情况下对我有效的解决方案,只要你们的论点不是巨大的矩阵或类似的东西


假设我想用我在主函数中初始化的值测试函数foo(a,b,c)。我可以在不更改代码的情况下调用以下内容

timeit.Timer('foo({},{},{})'.format(a,b,c), "from __main__ import foo")
如果参数是字符串,则必须在值周围重新引入引号:

timeit.Timer('foo("{}","{}","{}")'.format(a,b,c), "from __main__ import foo")

作为最后的警告,你必须考虑到你的参数将通过Stand()格式,这可能导致它们失去各种类型的精确性和完整性。如果使用此方法,请检查您的输入

同样的方式<代码>打印(timeit.timeit(“测试(5)”,setup=“从主导入测试”)。如果要使用在timeit代码之外定义的对象,则必须像导入其他对象一样导入该参数。timeit字符串只是普通的Python代码,一切正常。(我喜欢回答这个问题:-p)
timeit.Timer('foo("{}","{}","{}")'.format(a,b,c), "from __main__ import foo")