【问题标题】:For loop after import doesn't work in Python one-liner导入后的 For 循环在 Python 单行中不起作用
【发布时间】:2014-11-06 11:19:23
【问题描述】:

如果我使用import 并且随后使用for,我会收到invalid syntax 错误。我不知道为什么会这样。

> python3 -c 'import os; for a in range(1,5): print(a)'
  File "<string>", line 1
    import os; for a in range(1,5): print(a)
                 ^

删除import 工作正常:

> python3 -c 'for a in range(1,5): print(a)'
1
2
3
4

或完全删除 for 循环:

> python3 -c 'import os; print(10)'
10

那是怎么回事?

【问题讨论】:

    标签: python import terminal syntax-error


    【解决方案1】:

    这是一个错误,因为它不在 Python 语法中。

    如果您查看syntax specification for compound statements,您会看到一个语句列表(即您使用分号所做的)定义为:

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

    for 构造不是simple_stmt,而是compound_stmt

    但是,print(10)simple_stmt,因此就可以了。

    【讨论】:

      【解决方案2】:

      如您所见,Python 不允许您将块开始语句(如for)与其他语句放在一行中。 一般来说,在某些情况下,您不应该在脚本中使用;(例如使用-c 执行python 代码的命令),这是唯一的解决方案,但在脚本中只需使用换行符。

      有关 Python 编码风格标准的详细信息,您可以阅读 PEP 8:http://legacy.python.org/dev/peps/pep-0008/

      【讨论】:

        猜你喜欢
        • 2016-01-31
        • 2018-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多