NameError для использования timeit в python - PullRequest
0 голосов
/ 26 июля 2010

Я получил NameError при попытке запустить этот код. «Глобальное имя j не определено».Как я могу это исправить?

def test(j):
    for i in range(j):
        j = i**2

if __name__=='__main__':
    from timeit import Timer
    j = 30
    t = Timer("test(j)","from __main__ import test")
    print( t.timeit(j))

1 Ответ

3 голосов
/ 26 июля 2010

Timer не знает о j.Вам нужно сделать что-то вроде "test(%d)" % j (или from __main__ import j, или поместить в строку определение j тоже).

Кроме того, аргумент timeit отличается от аргумента вашегоtest функция (поэтому различные варианты использования j, вероятно, не то, что вы должны делать или иметь в виду).Аргумент timeit указывает количество выполнений для тестовой функции.

ps Обратите внимание, что для форматирования любого кода в вашем вопросе требуется отступ

pps.не используется from __main__ import, но это действительно работает!

...