Python 运算符:编程世界的基石

0 阅读8分钟

在学习任何编程语言时,运算符都是不可或缺的基础概念。 它们是构建表达式、执行计算和进行逻辑判断的基石。 掌握 Python 的运算符,是你踏入编程世界的第一步。 本文将带你了解 Python 中常见的运算符类型,并通过简单的例子,让你轻松掌握它们的使用方法。

一、算术运算符:数字世界的运算

算术运算符用于执行基本的数学运算,例如加、减、乘、除等。

  • + (加法):将两个数相加。
  • - (减法):将两个数相减。
  • * (乘法):将两个数相乘。
  • / (除法):将两个数相除,结果为浮点数。
  • // (整除):将两个数相除,结果为整数 (向下取整)。
  • % (取余):返回两个数相除的余数。
  • ** (幂运算):返回一个数的指定次幂。

代码示例:

a = 10
b = 3

print(f"a + b = {a + b}")  # 输出:a + b = 13
print(f"a - b = {a - b}")  # 输出:a - b = 7
print(f"a * b = {a * b}")  # 输出:a * b = 30
print(f"a / b = {a / b}")  # 输出:a / b = 3.3333333333333335
print(f"a // b = {a // b}") # 输出:a // b = 3
print(f"a % b = {a % b}")  # 输出:a % b = 1
print(f"a ** b = {a ** b}") # 输出:a ** b = 1000

运行结果:

二、比较运算符:真与假的判断

比较运算符用于比较两个值的大小或是否相等,返回布尔值 (True 或 False)。

  • == (等于):判断两个值是否相等。
  • != (不等于):判断两个值是否不相等。
  • > (大于):判断左边的值是否大于右边的值。
  • < (小于):判断左边的值是否小于右边的值。
  • >= (大于等于):判断左边的值是否大于或等于右边的值。
  • <= (小于等于):判断左边的值是否小于或等于右边的值。

代码示例:

a = 5
b = 8

print(f"a == b: {a == b}")  # 输出:a == b: False
print(f"a != b: {a != b}")  # 输出:a != b: True
print(f"a > b: {a > b}")   # 输出:a > b: False
print(f"a < b: {a < b}")   # 输出:a < b: True
print(f"a >= b: {a >= b}")  # 输出:a >= b: False
print(f"a <= b: {a <= b}")  # 输出:a <= b: True

运行结果:

三、逻辑运算符:条件的组合

逻辑运算符用于组合多个条件,返回布尔值。

  • and (与):当所有条件都为 True 时,返回 True;否则返回 False
  • or (或):当至少有一个条件为 True 时,返回 True;否则返回 False
  • not (非):对条件取反,如果条件为 True,则返回 False;如果条件为 False,则返回 True

代码示例:

x = True
y = False

print(f"x and y: {x and y}")  # 输出:x and y: False
print(f"x or y: {x or y}")   # 输出:x or y: True
print(f"not x: {not x}")    # 输出:not x: False

运行结果:

四、赋值运算符:变量的更新

赋值运算符用于将值赋给变量。

  • = (简单赋值):将右边的值赋给左边的变量。
  • += (加法赋值):将左边的变量加上右边的值,并将结果赋给左边的变量。
  • -= (减法赋值):将左边的变量减去右边的值,并将结果赋给左边的变量。
  • *= (乘法赋值):将左边的变量乘以右边的值,并将结果赋给左边的变量。
  • /= (除法赋值):将左边的变量除以右边的值,并将结果赋给左边的变量。
  • //= (整除赋值):将左边的变量整除以右边的值,并将结果赋给左边的变量。
  • %= (取余赋值):将左边的变量除以右边的值的余数赋给左边的变量。
  • **= (幂运算赋值):将左边的变量的指定次幂赋给左边的变量。

代码示例:

a = 5

a += 3  # 等价于 a = a + 3
print(f"a += 3: {a}")  # 输出:a += 3: 8

a -= 2  # 等价于 a = a - 2
print(f"a -= 2: {a}")  # 输出:a -= 2: 6

a *= 4  # 等价于 a = a * 4
print(f"a *= 4: {a}")  # 输出:a *= 4: 24

a /= 3  # 等价于 a = a / 3
print(f"a /= 3: {a}")  # 输出:a /= 3: 8.0

a //= 2  # 等价于 a = a // 2
print(f"a //= 2: {a}") # 输出:a //= 2: 4.0

a %= 3  # 等价于 a = a % 3
print(f"a %= 3: {a}")  # 输出:a %= 3: 1.0

a **= 2  # 等价于 a = a ** 2
print(f"a **= 2: {a}") # 输出:a **= 2: 1.0

运行结果:

五、其他运算符:扩展你的工具箱

除了以上常见的运算符,Python 还提供了一些其他运算符,例如位运算符、成员运算符和身份运算符。 这些运算符在特定的场景下非常有用,但对于初学者来说,可以先了解它们的存在,在需要的时候再深入学习。

1、位运算符:二进制世界的操控 (了解即可)

位运算符用于对整数的二进制位进行操作。 常见的位运算符包括:

  • & (按位与):将两个数的二进制位进行与运算。
  • | (按位或):将两个数的二进制位进行或运算。
  • ^ (按位异或):将两个数的二进制位进行异或运算。
  • ~ (按位取反):将一个数的二进制位取反。
  • << (左移):将一个数的二进制位向左移动指定的位数。
  • >> (右移):将一个数的二进制位向右移动指定的位数。

代码示例:

a = 5  # 二进制:0101
b = 3  # 二进制:0011

print(f"a & b: {a & b}")  # 输出:a & b: 1 (二进制:0001)
print(f"a | b: {a | b}")  # 输出:a | b: 7 (二进制:0111)
print(f"a ^ b: {a ^ b}")  # 输出:a ^ b: 6 (二进制:0110)
print(f"~a: {~a}")    # 输出:~a: -6 (二进制:...1010)  # 需要了解补码的概念
print(f"a << 1: {a << 1}") # 输出:a << 1: 10 (二进制:1010)
print(f"a >> 1: {a >> 1}") # 输出:a >> 1: 2 (二进制:0010)

运行结果:

说明: 位运算符主要用于底层编程和对性能要求较高的场景。 初学者可以先了解它们的存在,在需要的时候再深入学习。 涉及到位运算,通常需要理解二进制和补码的相关知识。

2、成员运算符:集合中的存在性判断

成员运算符用于判断一个值是否存在于一个序列 (例如字符串、列表、元组) 或集合中。

  • in:如果值存在于序列或集合中,则返回 True;否则返回 False
  • not in:如果值不存在于序列或集合中,则返回 True;否则返回 False

代码示例:

my_list = [1, 2, 3, 4, 5]
my_string = "hello"

print(f"3 in my_list: {3 in my_list}")   # 输出:3 in my_list: True
print(f"6 in my_list: {6 in my_list}")   # 输出:6 in my_list: False
print(f"'h' in my_string: {'h' in my_string}") # 输出:'h' in my_string: True
print(f"'z' in my_string: {'z' in my_string}") # 输出:'z' in my_string: False

运行结果:

3、身份运算符:对象身份的比较

身份运算符用于比较两个对象是否是同一个对象 (即在内存中是否指向同一个地址)。

  • is:如果两个对象是同一个对象,则返回 True;否则返回 False
  • is not:如果两个对象不是同一个对象,则返回 True;否则返回 False
  • is 比较的是两个对象的身份 (id),即它们在内存中是否指向同一个地址。
  • == 比较的是两个对象的值是否相等。

代码示例:

a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(f"a is b: {a is b}")  # 输出:a is b: True (a 和 b 指向同一个列表对象)
print(f"a is c: {a is c}")  # 输出:a is c: False (a 和 c 指向不同的列表对象,即使它们的值相同)
print(f"a is not c: {a is not c}") # 输出:a is not c: True

运行结果:

说明: is 和 == 的区别:

       对于不可变对象 (例如数字、字符串、元组),如果它们的值相等,那么它们通常会指向同一个对象 (这是一种优化策略)。 但对于可变对象 (例如列表、字典),即使它们的值相等,它们也通常会指向不同的对象。

六、运算符优先级:计算的顺序

当一个表达式包含多个运算符时,运算符的优先级决定了计算的顺序。 常见的运算符优先级从高到低如下:

  • ** (幂运算)
  • *///% (乘法、除法、整除、取余)
  • +- (加法、减法)
  • <<>> (左移、右移)
  • & (按位与)
  • |^ (按位或、按位异或)
  • ==!=><>=<= (比较运算符)
  • not (逻辑非)
  • and (逻辑与)
  • or (逻辑或)
  • = (赋值运算符)

可以使用圆括号 () 来改变运算符的优先级。 圆括号中的表达式会先被计算。

代码示例:

result = 3 + 4 * 2  # 先算乘法,再算加法
print(f"3 + 4 * 2 = {result}")  # 输出:3 + 4 * 2 = 11

result = (3 + 4) * 2  # 先算加法,再算乘法
print(f"(3 + 4) * 2 = {result}")  # 输出:(3 + 4) * 2 = 14

运行结果:

七、总结:熟练掌握,灵活运用

运算符是 Python 编程的基础,掌握它们的用法和优先级是编写正确、高效代码的关键。 通过本文的学习,你应该对 Python 的各种运算符有了初步的了解。 在实际编程中,多练习、多实践,你就能熟练掌握它们,并灵活运用到各种场景中。 祝你学习顺利!