python -c 'import sys; print "a"'
有效,
python -c 'for a in [1, 2, 3]: print a'
有效,但
python -c 'import sys; for a in [1, 2, 3]: print a'
失败
File "<string>", line 1
import sys; for a in [1, 2, 3]: print a
^
为什么?
编辑我的解决方法:
python -c 'import sys; print "\n".join([1, 2, 3])'
(幸运的是,它也适用于我的真实代码。)
答案 0 :(得分:4)
您只能使用;
在一行中分隔非复合语句;语法不允许使用分号分隔的非复合语句和复合语句。
相关语法规则如下:
stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
;
制作中的simple_stmt
是允许使用分号分隔语句的唯一位置。有关详细信息,请参阅full Python grammar。
答案 1 :(得分:0)
不是您确切问题的答案,但仍然可以帮助某人。 您实际上可以在shell中拆分命令行。
sh / bash / etc:
python -c 'import sys
for a in [1, 2, 3]: print a'
Windows cmd (C:\>
和'More?'
是cmd提示符,请不要输入):
C:\>python -c import sys^
More?
More? for a in [1, 2, 3]: print a