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

问题描述 投票:0回答:1

根据这篇文章:像Pythonista一样编码:惯用的Python

有一行指出:

“这是因为这种自动连接是Python解析器/编译器的功能,而不是解释器的功能。您必须在运行时使用“+”运算符来连接字符串。”

我不明白这个说法,因为我不知道python编译器或解释器实际上是如何工作的。串联是如何工作的?因为:

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

不会评估:

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

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

python debugging interpreter
1个回答
5
投票

本声明不涉及Python shell。事实上,交互式输入和文件输入在这方面的行为几乎相同:在两者中,

  • "a" "b"
    有效
  • var1 var2
    不起作用
  • 第一个中的串联是在编译时完成的,而不是运行时(或本文所说的“由解释器”完成)。

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

© www.soinside.com 2019 - 2024. All rights reserved.