求助 Python 语法问题

tuobashao · 2024-9-3 19:29:10 · 104 次点击
在 shell 中执行
python -c "if 1==1:  print('121')"
正常打印 121

但是执行
python -c "1==1;if 1==1:  print('121')"
就报错
1==1;if 1==1:  print('121')
         ^^
SyntaxError: invalid syntax

这里的分号;我感觉是换行的意思,为什么会报错,求大佬帮忙解答下,thanks
举报· 104 次点击
登录 注册 站外分享
5 条回复  
iorilu 小成 2024-9-3 20:57:46
为什么有这种需求呢, 从 bash 执行字符串代码?
hutoer 小成 2024-9-3 20:55:00
当 if 前面有语句时,格式是:语句 if 条件 else 语句。

这样就可以了:
python -c "1==1; print('121') if 1==1 else print()"
nagisaushio 小成 2024-9-3 19:50:30
楼上没说到点上

https://docs.python.org/3/reference/compound_stmts.html#grammar-token-python-grammar-statement

python 中有个 simple_stmt 的概念,只有 simple_stmt 才能用分号隔开,但 if 不是
zictos 小成 2024-9-3 19:37:52
说明包含了 if 就不能用分号了,你直接写在 python 代码中执行也会报错。
你可以用 base64 编码后再解码并用 exec 执行
ZZ74 小成 2024-9-3 19:31:22
python 啥时候用分号换行了
不都是靠空格和游标卡尺么
返回顶部