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

时间:2014-07-29 21:12:18

标签: python debugging compiler-construction interpreter

根据这篇文章:Code Like a Pythonista: Idiomatic Python

有一行说明:

  

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

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

>>> a = 'three'
>>> b = 'four'
>>> a b

不评估为:

>>> a = 'three'
>>> b = 'four'
>>> a b
>>> 'three' 'four'
>>> 'threefour'

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

1 个答案:

答案 0 :(得分:5)

此语句未引用Python shell。实际上,交互式输入和文件输入在这方面的表现几乎相同:在两者中,

  • "a" "b"正常工作
  • var1 var2无法正常工作
  • 第一个中的连接是在编译时完成的,而不是运行时(或#34;由解释器"正如文章所称)。

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