Как использовать другое время в Python

Я новичок в использовании модуля timeit, и у меня возникают трудности с запуском многострочных фрагментов кода внутри timeit.

Что работает:

timeit.timeit(stmt = "if True: print('hi');")

Что не работает (все они даже не запускаются):

timeit.timeit(stmt = "if True: print('hi'); else: print('bye')")
timeit.timeit(stmt = "if True: print('hi') else: print('bye')")
timeit.timeit(stmt = "if True: print('hi');; else: print('bye')")

Я обнаружил, что могу использовать тройные кавычки для инкапсуляции сегментов многострочного кода, но я предпочел бы просто печатать на одной строке.

Есть ли способ использовать оператор else внутри одной строки по времени?

4 ответа

Решение

Предоставленная вами строка интерпретируется как исходный код, поэтому вы можете использовать многострочные строки с тремя кавычками, например

>>> timeit.timeit(stmt = """if True: 'hi'
... else: 'bye'""")
0.015218939913108187

или же \n для перевода строки (но это выглядит довольно грязно)

>>> timeit.timeit(stmt = "if True: 'hi'\nelse: 'bye'")
0.015617805548572505

Вы также можете использовать троичный if-else условие, если вам нужна только одна ветвь (так что никакой новой строки не требуется):

>>> timeit.timeit(stmt = "'hi' if True else 'bye'")
0.030958037935647553

Этот код будет работать так, как вы хотите:

timeit.timeit("""
if True: print('hi')
else: print('bye')
""")

Обязательно наличие новой линии

Помните об условном выражении: <true val> if <condition> else <false val>

При использовании с timeit это может выглядеть как

timeit.timeit("print('true') if 2+2 == 4 else print('false')")

Заметки:

  • этот пример будет работать в python3, я хотел использовать print как функция, потому что это было проще всего. Конечно вы можете from __future__ import print_function в p2.x
  • этот пример, очевидно, будет выводиться как * itload od "true", будьте осторожны при его запуске

Мой ответ был найден в ответе на этот вопрос.

Вы должны иметь новую линию между if а также elseтак работает

timeit.timeit(stmt = "if True: print('hi');\nelse: print('bye')")

Другие вопросы по тегам