如何证明'a''b'不会在python shell中自动连接?

fro*_*hem -2 python compiler-construction debugging interpreter

根据这篇文章:代码像Pythonista:惯用Python

有一条线说明:

"那是因为这种自动连接是Python解析器/编译器的一个特性,而不是解释器.你必须使用"+"运算符在运行时连接字符串."

我不明白这个陈述,因为我不知道python编译器或解释器实际上是如何工作的.连接如何工作?因为:

>>> a = 'three'
>>> b = 'four'
>>> a b
Run Code Online (Sandbox Code Playgroud)

不评估为:

>>> a = 'three'
>>> b = 'four'
>>> a b
>>> 'three' 'four'
>>> 'threefour'
Run Code Online (Sandbox Code Playgroud)

是否有任何工具可以跟踪从原始文本'*.py'开始直到从终端打印输出的编译过程?

小智 5

该语句不涉及Python shell.实际上,交互式输入和文件输入在这方面的表现几乎相同:在两者中,

  • "a" "b" 作品
  • var1 var2 不起作用
  • 第一个中的连接是在编译时完成的,而不是运行时(或者由文章称之为"由解释器"完成).

当您输入Python源代码时,无论您如何准确地执行此操作,都会首先将其编译为字节码.此编译步骤接受字符串文字,中间没有任何内容,并将其视为由这些较短文字构成的单个字符串文字.然后它创建完全相同的字节码,就像编写单个连接字符串一样,并且当解释器执行该代码时,它既不能也不需要知道,在源代码中,您编写了两个字符串文字而不是一个.