为什么 `python -c ‘print(‘howdy’)’` 会产生错误(在 zsh 中),而 `python -c ‘print(“howdy”)’` 不会?

在 中zsh,当我python -c 'print('howdy')'从命令行执行时,它会产生以下错误。

Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'howdy' is not defined

但是,这python -c 'print("howdy")'不会,而是产生我期望的输出,即howdy(作为字符串)发送到stdout?

我认为 python 在单引号或双引号上是不可知的

回答

Zsh 首先解析命令,遵循它自己的引号规则。对于 zsh,该命令python -c 'print('howdy')'类似于以下内容:

  • 我们正在调用程序 python
  • 第一个论点是 -c
  • 第二个参数'print('用引号括起来,后跟howdy, 再用')'引号括起来。

Zsh 正在将第二个参数“扩展”到'print(howdy)'. 如果你在 python 中运行这个命令,你会得到你描述的错误。


以上是为什么 `python -c ‘print(‘howdy’)’` 会产生错误(在 zsh 中),而 `python -c ‘print(“howdy”)’` 不会?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>