Как передать параметры в функцию timeit.timeit Python - PullRequest
0 голосов
/ 06 ноября 2018

Я должен проверить свою функцию:

def change_min_and_max(array):
    some_code

И мне нужно использовать timeit.timeit для этого. Но я не могу передать массив в мою функцию:

import random
array = [random.randint(-1000, 1000) for _ in range(100)]
import timeit
print(timeit.timeit('change_min_and_max(array)', number=100))

имя 'change_min_and_max' не определено

1 Ответ

0 голосов
/ 10 ноября 2018

Проблема в том, что timeit выполняет код в отдельном пространстве имен и не знает об определениях функций и массивов. Вы можете указать пространство имен с параметром globals. Если вы просто хотите использовать текущее пространство имен, вы можете использовать функцию globals() следующим образом:

import random, timeit

def change_min_and_max(array):
    ...

array = [...]

timeit.timeit("change_min_and_max(array)", globals=globals())
...