python-3.x - 在 Python 中将函数(带参数)作为参数传递
问题描述
我正在使用 Python 内置库timeit测量不同排序方法的性能。我想将一个函数和一个整数作为参数传递给timeit()中正在测试的语句。我尝试了以下方法:
def sort_1(l):
...
return l_sorted
def test(f: Callable, l_len: int):
l = np.random.rand(low=-1000, high=1000, size=l_len)
f(l)
timeit.timeit(stmt=test(sort_1, l_len=10), number=1000)
...带有 ValueError 表示 stmt 既不是字符串也不是可调用的。当我这样调用它时不会发生错误:
timeit.timeit(stmt=test, number=1000)
...但是我不能将任何参数传递给test()。如果有人想将参数传递给作为参数给出的函数,一般的解决方案是什么?(比方说,当一个方法已经实现并且无法在单独的参数中传递参数时)
干杯
编辑:
@jonrsharpe,谢谢!解决方案如下所示:
timeit.timeit(stmt='test(f=sort_1, l_len=10)', number=100, globals=globals())
解决方案
推荐阅读
- python-3.x - 在 django 石墨烯中似乎没有调用 model.UUIDField() 的默认值
- reactjs - 如何在 React Native 中使用带有 RNPickerSelect 的 React Hook Form?
- python - 时间序列平稳技术
- typescript - 如何使用默认值从打字稿文件中导出所有功能?
- reactjs - 创建用户后如何将数据添加到firestore文档
- javascript - Chrome不会循环更改按钮文本
- android - 将数据从回收器视图传递到报价应用程序中的新活动,新活动正在打开但数据未到来
- javascript - 使用 Angular 检查 Firebase 数据库中是否存在数据
- unity3d - Unity 2020.2.0a13 中的精灵问题
- macos - 将 Conduktor 连接到 Kafka Docker 容器