提问人:Johan Falkenjack 提问时间:11/9/2023 更新时间:11/9/2023 访问量:37
Python 术语中“运算符”的定义,以及扩展的“操作数”
Definition of "operator", and by extension "operand", in Python terminology
问:
这句话正确吗?
fot += [duk]
是 Python 中的赋值,实际上是
和 不是操作数的缩写,
但是,它们是fot = fot + [duk]
fot
[duk]
fot += [duk]
fot + [duk]
背景:
我目前在一门使用 Python 作为教学语言的入门编程本科课程中担任讲师。我正在浏览一些材料,内容涉及他们过去几年在这门课程中所做的关于编程术语的教学练习。上面的引文来自学生在前几年练习中犯的常见错误列表。我从瑞典语原文翻译过来,并添加了强调和格式。
在 Python 中被称为增强赋值运算符之一,在我看来,如果某物是运算符,那么它所操作的任何东西都是操作数。J.F. 以上是运算符的操作数。然而,自从我从更正式的角度学习编程语言课程以来,已经有 15 年了,所以我可能忘记了很多在这种情况下重要的细节。主要是,我认为赋值是一个语句可能会影响我们如何定义运算符和操作数,但我基本上是在这方面猜测。+=
fot
[duk]
+=
我迄今为止的研究
我开始深入研究 Python 语言参考,我认为上面引用的原因可以在第 2.5 节中找到,该节涵盖了词法分析并列出了在该上下文中定义为运算符的标记集。该列表不包括(也不包括常规赋值运算符)。相反,它们列在涵盖分隔符的第 2.6 节中。(但是,本节确实称为“增强赋值运算符”,因此它已经变得混乱了。+=
=
+=
此外,在第 7.2 节中,涵盖赋值语句,隐含地称为“赋值运算符”。仔细阅读 [第 7.2.1 节],其中专门介绍了增强分配,其中包含以下引述 [强调我的]:=
增强赋值计算目标(与普通赋值语句不同,它不能是解包)和表达式列表,对两个操作数执行特定于赋值类型的二进制运算,并将结果分配给原始目标。目标仅评估一次。
这句话似乎加强了我的观点。它在 的上下文中显式使用单词操作数。但是,它可以被解释为两个标记是“特定于赋值类型的二进制运算”的操作数,而不是增强赋值本身的操作数。这甚至可能就是原文引文的第三行所说的。+=
巧合的是,进一步阅读第 7.2.1 节会发现,无论第 2 行和第 3 行如何,上面引文的第一行都不太正确。
与普通作业不同,增强作业先评估左侧,然后再评估右侧。
J.F. 不是简单的一个扩展为的宏,它实际上语义略有不同。fot += [duk]
fot = fot + [duk]
一种猜测是,无论谁写了上面的原始引文,都只看了第 2.5 节,并指出它不在标记化上下文中的运算符列表中,并且/或记住它通常不被视为数学中的运算符,并停在那里。但是,我浏览了多个部分并搜索了对“运算符”和“操作数”的引用,但我仍然不确定。不过,我绝对没有阅读整个 Python 语言参考。在 的上下文中,可能还有其他因素会影响 和 作为操作数的状态,或者不影响 。+=
=
fot
[duk]
fot += [duk]
你的想法?
答: 暂无答案
下一个:数字只是数字吗?
评论
+=
a += a
a = a + b
x += y
x.__iadd__
x = x.__iadd__(y)
x = x.__add__(y)
=
+=
==
+
for
def
=
、+=
等)[...]不是真正的运算符,而是赋值语句中的句法分隔符。