You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bash中调用Python单行for循环报语法错,列表推导式正常

语法差异原因解析

这是因为Python对分号分隔语句的规则有明确限制:分号只能用来分隔多个简单语句,而for循环属于复合语句(带有冒号和代码块的语句结构),不能直接和前面的简单语句用分号拼接。

看报错的代码:

import sys; for i in sys.stdin: print(i)

这里import sys是简单语句,但后面的for循环是复合语句,Python不允许用分号把简单语句和复合语句放在同一行的这种写法,所以触发语法错误。

而列表推导式的写法:

import sys; [print(i) for i in sys.stdin]

这里的[print(i) for i in sys.stdin]是一个表达式,属于可以用分号和前面简单语句拼接的范畴,所以Python能正确解析执行。

另外补充一点:如果非要在一行写for循环,得用exec包裹复合语句,比如:

echo -e "test1\ntest2\ntest3" | python -c "import sys; exec('for i in sys.stdin: print(i)')"

这样就能正常运行了。

内容的提问来源于stack exchange,提问作者Daniel Krajnik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:33:13