Python 的假增量和减量运算符

在 Python 中,您可以通过以下方式增加变量的值 1 或减少它 1 使用增强赋值运算符。 代码 spam += 1spam -= 1 递增和递减中的数值 spam 经过 1, 分别。

其他语言如 C++ 和 Java 具有 ++-- 用于递增和递减变量的运算符。 (C++ 的名称本身就反映了这一点;这个名称是一个半开玩笑的玩笑,表明它是 C 语言的增强形式。)C++ 和 Java 中的代码可能具有 ++spam 或者 spam++. Python 明智地不包含这些运算符; 众所周知,它们容易受到细微错误的影响。

但是,拥有以下 Python 代码是完全合法的:

>>> spam = 42
>>> spam = ++spam
>>> spam
42
>>> spam = --spam
>>> spam
42

你注意到的第一件事是 ++-- Python 中的“运算符”实际上并不增加或减少中的值 spam. 而是领先的 - 是 Python 的一元否定运算符。 它允许你有这样的代码:

>>> spam = 42
>>> print(-spam)
-42

在一个值前面有多个一元否定运算符是合法的。 使用其中两个,您将得到负值的负值,对于整数值,它的计算结果仅为原始值:

>>> print(--spam)
42
>>> --42
42

这是一件非常愚蠢的事情,你永远不会在现实世界的代码中看到一个一元取反运算符被使用两次。 (虽然如果你这样做了,那可能是因为学会了用另一种语言编程的程序员刚刚编写了有问题的 Python 代码!)还有一个 + 一元运算符。 它将一个整数值计算为与原始值相同的符号,也就是说,它什么都不做:

>>> +42
42
>>> spam = -42
>>> print(+spam) # +spam is not the same as abs(spam)
-42

会写 +42 (或者 ++42) 看起来和 --42,那么为什么 Python 甚至有这个一元运算符呢? 它的存在只是为了补充 运算符,如果你需要为你自己的类重载这些运算符。 (请参阅文档以获取 __pos__ 特殊方法。)

+ 一元运算符仅在 Python 值之前有效,在它之后无效。 尽管 spam++spam-- 在 C++ 或 Java 中可能是合法的代码,它们在 Python 中会产生语法错误:

>>> spam++
  File "<stdin>", line 1
    spam++
         ^
SyntaxError: invalid syntax

Python 没有递增和递减运算符,它只是语言语法的一个怪癖,可以让它看起来像。

阅读更多

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注