如何在 Python 的 time 中使用 else



我是使用 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 语句?

您提供的字符串被解释为源代码,因此您可以使用带有三个引号的多行字符串,例如

>>> 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

记住条件表达式:<true val> if <condition> else <false val>

当与time一起使用时,它可能看起来像

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

笔记:

  • 这个例子可以在 python3 中使用,我想使用 print 作为一个函数,因为它是最简单的。当然,您可以在p2.x中from __future__ import print_function
  • 此示例显然会输出一个 s*itload od "true"s,运行它时要小心

此代码将按您想要的方式工作:

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

必然是新行的存在

我的答案是在这个问题的答案中找到的。

您需要在ifelse之间留一条新行,因此可以这样做

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

相关内容

  • 没有找到相关文章

最新更新