gpt4 book ai didi

Python 语法 : using loops inside a timeit statement

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:42 26 4
gpt4 key购买 nike

其中两个语句运行,而另一个因语法错误而失败。我做错了什么?

>>> Timer('for i in xrange(10): oct(i)').repeat(3)
[2.7091379165649414, 2.6934919357299805, 2.689150094985962]
>>> Timer('n = [] ; n = [oct(i) for i in xrange(10)]').repeat(3)
[4.0500171184539795, 3.6979520320892334, 3.701982021331787]
>>> Timer('n = [] ; for i in xrange(10): n.append(oct(i))').repeat(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/timeit.py", line 136, in __init__
code = compile(src, dummy_src_name, "exec")
File "<timeit-src>", line 6
n = [] ; for i in xrange(10): n.append(oct(i))
^
SyntaxError: invalid syntax

最佳答案

您的失败语句在句法上不正确。如果您需要对多个语句进行计时,请在函数中定义它并在从 main 导入函数后调用 Timer

>>> def foo():
n = []
for i in xrange(10): n.append(oct(i))

>>> Timer("foo()","from __main__ import foo")

现在你需要理解失败语句为什么不正确

摘自 docs for Compound Statement

套件可以是一个或多个分号分隔的简单语句,位于与标题相同的行中,跟在标题的冒号之后,也可以是后续行中的一个或多个缩进语句。

stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]

同样,一个simple statement

simple_stmt ::=  expression_stmt
| assert_stmt
| assignment_stmt
| augmented_assignment_stmt
| pass_stmt
| del_stmt
| print_stmt
| return_stmt
| yield_stmt
| raise_stmt
| break_stmt
| continue_stmt
| import_stmt
| global_stmt
| exec_stmt

现在您应该清楚什么时候可以(不应该)使用分号了。

关于Python 语法 : using loops inside a timeit statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com