Pau*_*per 8 python syntax python-2.7
python -c 'import sys; print "a"'
Run Code Online (Sandbox Code Playgroud)
工作,和
python -c 'for a in [1, 2, 3]: print a'
Run Code Online (Sandbox Code Playgroud)
有效,但是
python -c 'import sys; for a in [1, 2, 3]: print a'
Run Code Online (Sandbox Code Playgroud)
失败了
File "<string>", line 1
import sys; for a in [1, 2, 3]: print a
^
Run Code Online (Sandbox Code Playgroud)
为什么?
编辑我的解决方法:
python -c 'import sys; print "\n".join([1, 2, 3])'
Run Code Online (Sandbox Code Playgroud)
(幸运的是,它也适用于我的真实代码.)
只能用于;在一行中分隔非复合语句;语法不允许非复合语句和由分号分隔的复合语句。
相关语法规则如下:
stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
Run Code Online (Sandbox Code Playgroud)
在;在simple_stmt生产,其中分号被允许单独陈述的唯一地方。有关更多详细信息,请参阅完整的 Python 语法。
不是您确切问题的答案,但仍然可以帮助某人。实际上,您可以在 shell 中拆分命令行。
sh/bash/等:
python -c 'import sys
for a in [1, 2, 3]: print a'
Run Code Online (Sandbox Code Playgroud)
Windows cmd(C:\>和'More?'是cmd提示符,不要输入这些):
C:\>python -c import sys^
More?
More? for a in [1, 2, 3]: print a
Run Code Online (Sandbox Code Playgroud)
2021 年添加:出于某种原因,上述 cmd 版本无法在我当前的 Windows 10 环境中运行。似乎没有引号 Python 解释器会在第一个空格处截断命令。这个变体仍然有效:
C:\>python -c ^
More? "import sys^
More?
More? for a in [1, 2, 3]: print a
Run Code Online (Sandbox Code Playgroud)
请注意,您需要在插入符号 (^) 后立即按 ENTER 键。另请注意上一个示例中第一个连续行上的双引号。
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |