# Python 运算符

> 原文： [https://www.programiz.com/python-programming/operators](https://www.programiz.com/python-programming/operators)

#### 在本教程中，您将学习有关 Python 中不同类型的运算符，它们的语法以及如何在示例中使用它们的所有知识。

## python 中的运算符是什么？

运算符是 Python 中执行算术或逻辑计算的特殊符号。 运算符所操作的值称为操作数。

例如：

```py
>>> 2+3
5
```

在此，`+`是执行加法的运算符。`2`和`3`是操作数，`5`是操作的输出。

* * *

## 算术运算符

算术运算符用于执行数学运算，例如加法，减法，乘法等。

| 运算符 | 含义 | 示例 |
| --- | --- | --- |
| `+` | 相加两个操作数或一元加 | `x + y + 2` |
| `-` | 从左侧减去右侧操作数或一元减 | `x - y - 2` |
| `*` | 将两个操作数相乘 | `x * y` |
| `/` | 将左操作数除以右操作数（结果总是为浮点） | `x / y` |
| `%` | 模 - 左侧除以右侧操作数的余数 | `x % y`（`x / y`的余数） |
| `//` | 整数除法 - 产生整数的除法，取整到数字的左侧 | `x // y` |
| `**` | 指数 - 左操作数的右操作数次幂 | `x ** y`（`x`的`y`次幂） |

### 示例 1：Python 中的算术运算符

```py
x = 15
y = 4

# Output: x + y = 19
print('x + y =',x+y)

# Output: x - y = 11
print('x - y =',x-y)

# Output: x * y = 60
print('x * y =',x*y)

# Output: x / y = 3.75
print('x / y =',x/y)

# Output: x // y = 3
print('x // y =',x//y)

# Output: x ** y = 50625
print('x ** y =',x**y)
```

**输出**

```py
x + y = 19
x - y = 11
x * y = 60
x / y = 3.75
x // y = 3
x ** y = 50625
```

* * *

## 比较运算符

比较运算符用于比较值。 根据条件返回`True`或`False`。

| 运算符 | 含义 | 示例 |
| --- | --- | --- |
| `>` | 大于 - 如果左操作数大于右操作数，则为`True` | `x > y` |
| `<` | 小于 - 如果左操作数小于右操作数，则为`True` | `x < y` |
| `==` | 等于 - 如果两个操作数相等，则为`True` | `x == y` |
| `!=` | 不等于 - 如果操作数不相等则为`True` | `x != y` |
| `>=` | 大于或等于 - 如果左操作数大于或等于右操作数，则为`True` | `x >= y` |
| `<=` | 小于或等于 - 如果左操作数小于或等于右操作数，则为`True` | `x <= y` |

### 示例 2：Python 中的比较运算符

```py
x = 10
y = 12

# Output: x > y is False
print('x > y is',x>y)

# Output: x < y is True
print('x < y is',x<y)

# Output: x == y is False
print('x == y is',x==y)

# Output: x != y is True
print('x != y is',x!=y)

# Output: x >= y is False
print('x >= y is',x>=y)

# Output: x <= y is True
print('x <= y is',x<=y)
```

**输出**：

```py
x > y is False
x < y is True
x == y is False
x != y is True
x >= y is False
x <= y is True
```

* * *

## 逻辑运算符

逻辑运算符是`and`，`or`和`not`运算符。

| 运算符 | 含义 | 示例 |
| --- | --- | --- |
| `and` | 如果两个操作数都为`True`，则为`True` | `x and y` |
| `or` | 如果任何一个操作数为`True`，则为`True` | `x or y` |
| `not` | 如果操作数为`false`，则为`True`（对操作数进行取反） | `not x` |

### 示例 3：Python 中的逻辑运算符

```py
x = True
y = False

print('x and y is',x and y)

print('x or y is',x or y)

print('not x is',not x)
```

**输出**：

```py
x and y is False
x or y is True
not x is False
```

这是这些运算符的[真值表](/python-programming/keyword-list#and_or_not)。

* * *

## 按位运算符

按位运算符作用于操作数，就好像它们是二进制数字的字符串一样。 它们一点一点地运行，因此得名。

例如，2 是二进制形式的`10`，而 7 是`111`。

**在下表中**：令`x = 10`（二进制的`0000 1010`）和`y = 4`（二进制的`0000 0100`）

| 运算符 | 含义 | 示例 |
| --- | --- | --- |
| `&` | 按位与 | `x & y = 0`（`0000 0000`） |
| <code>&#124;</code> | 按位或 | <code>x &#124; y = 14</code>（`0000 1110`） |
| `~` | 按位非 | `~x = -11`（`1111 0101`） |
| `^` | 按位异或 | `x ^ y = 14`（`0000 1110`） |
| `>>` | 按位右移 | `x >> 2 = 2`（`0000 0010`） |
| `<<` | 按位左移 | `x << 2 = 40`（`0010 1000`） |

* * *

## 赋值运算符

Python 中使用赋值运算符为变量赋值。

`a = 5`是一个简单的赋值运算符，它将右边的值 5 分配给左边的变量。

Python 中有多种复合运算符，例如`a += 5`，它们会添加到变量中，然后再分配给它们。 等效于`a = a + 5`。

| 运算符 | 示例 | 相当于 |
| --- | --- | --- |
| `=` | `x = 5` | `x = 5` |
| `+=` | `x += 5` | `x = x + 5` |
| `-=` | `x -= 5` | `x = x - 5` |
| `*=` | `x *= 5` | `x = x * 5` |
| `/=` | `x /= 5` | `x = x / 5` |
| `%=` | `x %= 5` | `x = x % 5` |
| `//=` | `x //= 5` | `x = x // 5` |
| `**=` | `x **= 5` | `x = x ** 5` |
| `&=` | `x &= 5` | `x = x & 5` |
| <code>&#124;=</code> |<code> x &#124; = 5</code> | <code>x = x &#124; 5</code> |
| `^=` | `x ^= 5` | `x = x ^ 5` |
| `>>=` | `x >>= 5` | `x = x >> 5` |
| `<<=` | `x <<= 5` | `x = x << 5` |

* * *

## 特殊运营商

Python 语言提供了一些特殊类型的运算符，例如身份运算符或成员资格运算符。 下面通过示例对其进行描述。

### 身份运算符

`is`和`is not`是 Python 中的身份运算符。 它们用于检查两个值（或变量）是否位于内存的同一部分。 两个相等的变量并不意味着它们是相同的。

| 运算符 | 含义 | 示例 |
| --- | --- | --- |
| `is` | 如果操作数相同，则为`True`（引用同一对象） | `x is True` |
| `is not` | 如果操作数不相同，则为`True`（不引用同一对象） | `x is not True` |

### 示例 4：Python 中的身份运算符

```py
x1 = 5
y1 = 5
x2 = 'Hello'
y2 = 'Hello'
x3 = [1,2,3]
y3 = [1,2,3]

# Output: False
print(x1 is not y1)

# Output: True
print(x2 is y2)

# Output: False
print(x3 is y3)
```

**输出**：

```py
False
True
False
```

在这里，我们看到`x1`和`y1`是相同值的整数，因此它们既相等又相同。`x2`和`y2`（字符串）也是如此。

但是列出了`x3`和`y3`。 它们是相等的但不相同。 这是因为尽管它们相等，但解释器将它们分别定位在内存中。

* * *

### 成员运算符

`in`和`not in`是 Python 中的成员运算符。 它们用于测试在序列中是否找到值或变量（[字符串](/python-programming/string)，[列表](/python-programming/list)，[元组](/python-programming/tuple)，[集](/python-programming/set)和[字典](/python-programming/dictionary)）。

在字典中，我们只能测试键的存在，而不是值。

| 运算符 | 含义 | 示例 |
| --- | --- | --- |
| `in` | 如果在序列中找到值/变量，则为`True` | `5 in x` |
| `not in` | 如果在序列中未找到值/变量，则为`True` | `5 not in x` |

### 示例 5：Python 中的成员资格运算符

```py
x = 'Hello world'
y = {1:'a',2:'b'}

# Output: True
print('H' in x)

# Output: True
print('hello' not in x)

# Output: True
print(1 in y)

# Output: False
print('a' in y)
```

**输出**：

```py
True
True
True
False
```

这里，`'H'`位于`x`中，但`'hello'`不存在于`x`中（请记住，Python 区分大小写）。 同样，`1`是键，`'a'`是字典`y`中的值。 因此，`'a' in y`返回`False`。