我不知道为什么
$ echo -e "test1ntest2ntest3" | python -c "import sys; for i in sys.stdin: print(i)"
产生无效语法:
File "<string>", line 1
import sys; for i in sys.stdin: print(i)
^^^
SyntaxError: invalid syntax
在使用列表推导式时效果很好:
$ echo -e "test1ntest2ntest3" | python -c "import sys; [print(i) for i in sys.stdin]"
结果:
test1
test2
test3
Python中的语句可以是单个复合语句,也可以是由;
分隔的一个或多个简单语句。复合语句是由以:
结尾的行后面跟着一个或多个附加语句组成的语句。你不能用;
来连接它们,因为分号是嵌套块的一部分还是结束复合语句的一部分会有歧义。
从https://docs.python.org/3/reference/grammar.html
statement: compound_stmt | simple_stmts
simple_stmts:
| simple_stmt !';' NEWLINE # Not needed, there for speedup
| ';'.simple_stmt+ [';'] NEWLINE
simple_stmt:
| assignment
| star_expressions
| return_stmt
| import_stmt
| raise_stmt
| 'pass'
| del_stmt
| yield_stmt
| assert_stmt
| 'break'
| 'continue'
| global_stmt
| nonlocal_stmt
compound_stmt:
| function_def
| if_stmt
| class_def
| with_stmt
| for_stmt
| try_stmt
| while_stmt
| match_stmt