неожиданный отступ для python timeit

У меня проблема с выполнением timeit для python. Вот коды

 import timeit
>>> iteration_test = """
     for i in itr :
         pass
         """
>>> 
>>> timeit.timeit(iteration_test, setup='itr = list(range(10000))', number=1000)

Я попробовал решение с вкладками, но это не сработало. В чем проблема?


person 911 910    schedule 19.07.2021    source источник
comment
Если ваш код действительно выглядит именно так, проблема в том, что ваш цикл for имеет отступ. Он не должен иметь отступ.   -  person Tim Roberts    schedule 19.07.2021
comment
открывается и закрывается для текстовых записей, но вы используете его в цикле for, который был проблемой   -  person arun n a    schedule 19.07.2021
comment
Существует дубликат с хорошим объяснением: stackoverflow.com/questions/23666307/   -  person Thierry Lathuille    schedule 19.07.2021


Ответы (3)


напишите свой код так -

iteration_test = """ 
for i in itr : 
    pass 
"""

timeit.timeit(iteration_test, setup='itr = list(range(10000))', number=1000)
person PCM    schedule 19.07.2021
comment
Это важно, потому что теперь нет ошибки. Строки тройных кавычек Python начинаются с глобальной области видимости, даже если они написаны под функцией - person PCM; 19.07.2021
comment
@Sujay, ты пробовал код? Это работает нормально. 3 строки в кавычках также имеют отступ. В отличие от одинарных или двойных кавычек, которые игнорируют начальный отступ - person PCM; 19.07.2021
comment
@Sujay Отступы имеют значение в строках, когда строка содержит код Python, который должен быть правильным. Как говорит PCM, попробуйте. - person BoarGules; 19.07.2021

Вы ввели вкладку в начале инструкции for. Попробуй это:

    import timeit
    
    iteration_test = """for i in itr : pass """
    
    timeit.timeit(iteration_test, setup='itr = list(range(10000))', number=1000)
person Agent Biscutt    schedule 19.07.2021
comment
это работает спасибо - person 911 910; 19.07.2021

пробел в трех кавычках (многострочная строка) считается частью строки. многострочные строки python, даже если перед именем переменной есть пробел, строка не должна иметь пробелы в нем. это может выглядеть неправильно на первый взгляд, но логически это имеет смысл

Например...

  iteration_test = """
for i in itr:
  pass
"""
person ManishSingh    schedule 19.07.2021
comment
Спасибо за помощь - person 911 910; 19.07.2021