pin_drop当前位置:知识文库 ❯ 图文
Python赋值运算符
概述
赋值运算符用于将值赋给变量。Python提供了多种赋值方式,从最基本的赋值到增量赋值,再到Python 3.8引入的海象运算符。本节将详细介绍各类赋值运算符的用法,帮助你更高效地进行变量赋值操作。
基本赋值
简单赋值(=)
使用等号=将右边的值赋给左边的变量:
代码示例
x = 10
name = "Alice"
pi = 3.14159
is_valid = True多变量赋值
代码示例
a, b, c = 1, 2, 3
x = y = z = 0解包赋值
代码示例
first, *rest = [1, 2, 3, 4, 5]
head, *middle, tail = [10, 20, 30, 40]提示:赋值运算符
=与比较运算符==完全不同,=是赋值,==是比较。
增量赋值
增量赋值(又称复合赋值)将运算和赋值合并为一步,使代码更简洁。
加法赋值(+=)
代码示例
x = 10
x += 5
print(x)
total = 0
for i in range(1, 6):
total += i
print(f"1到5的和: {total}")输出:
代码示例
15
1到5的和: 15减法赋值(-=)
代码示例
x = 20
x -= 8
print(x)输出:
代码示例
12乘法赋值(*=)
代码示例
x = 5
x *= 3
print(x)
factorial = 1
for i in range(1, 6):
factorial *= i
print(f"5的阶乘: {factorial}")输出:
代码示例
15
5的阶乘: 120除法赋值(/=)
代码示例
x = 20
x /= 4
print(x)输出:
代码示例
5.0取模赋值(%=)
代码示例
x = 17
x %= 5
print(x)输出:
代码示例
2幂赋值(**=)
代码示例
x = 2
x **= 10
print(x)输出:
代码示例
1024整除赋值(//=)
代码示例
x = 17
x //= 5
print(x)输出:
代码示例
3增量赋值与不可变对象
对于不可变对象(如整数、字符串),增量赋值等价于x = x + 5,会创建新对象:
代码示例
x = 10
print(id(x))
x += 5
print(id(x))增量赋值与可变对象
对于可变对象(如列表),增量赋值在原对象上修改:
代码示例
a = [1, 2, 3]
b = a
a += [4, 5]
print(f"a = {a}")
print(f"b = {b}")
print(f"a is b: {a is b}")输出:
代码示例
a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
a is b: True提示:
+=对列表是在原对象上追加,而a = a + [4, 5]会创建新对象。
海象运算符
海象运算符(Walrus Operator):=是Python 3.8引入的赋值表达式,允许在表达式中同时进行赋值和返回值。
基本语法
代码示例
if (n := 10) > 5:
print(f"n的值为{n},大于5")在while循环中使用
避免重复调用函数:
代码示例
import re
text = "Hello 123 World 456 Python 789"
pattern = re.compile(r'\d+')
while (match := pattern.search(text)):
print(f"找到数字: {match.group()}")
text = text[match.end():]在列表推导式中使用
避免重复计算:
代码示例
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered = [y for x in data if (y := x ** 2) > 25]
print(filtered)输出:
代码示例
[36, 49, 64, 81, 100]在条件判断中使用
代码示例
values = [1, 2, 3, 4, 5]
if (length := len(values)) > 3:
print(f"列表有{length}个元素,超过3个")运算符表格
代码示例
示例1:累加求和
代码示例
total = 0
count = 0
for i in range(1, 101):
if i % 2 == 0:
total += i
count += 1
print(f"1到100的偶数之和: {total}")
print(f"偶数个数: {count}")
print(f"平均值: {total / count:.1f}")示例2:阶乘计算
代码示例
n = 10
result = 1
i = 1
while i <= n:
result *= i
i += 1
print(f"{n}! = {result}")示例3:海象运算符简化代码
代码示例
import re
def parse_numbers(text):
results = []
while (match := re.search(r'\d+', text)):
results.append(int(match.group()))
text = text[match.end():]
return results
text = "订单号123,数量45,价格678.9"
numbers = parse_numbers(text)
print(f"提取的数字: {numbers}")示例4:增量赋值与字符串
代码示例
greeting = "Hello"
greeting += " "
greeting += "World"
greeting += "!"
print(greeting)
line = ""
line += "=" * 10
line += " Python "
line += "=" * 10
print(line)注意事项
赋值不是比较:
=是赋值,==是比较,不要混淆。if x = 5会报语法错误。
增量赋值与可变对象:对列表使用
+=是在原对象上修改,而a = a + [...]会创建新对象。
海象运算符需要括号:在复杂表达式中使用
:=时,通常需要加括号以明确优先级。
海象运算符的Python版本:
:=仅在Python 3.8+中可用,旧版本不支持。
增量赋值不可用于表达式:如
1 += 2是非法的,增量赋值左侧必须是变量。
小结
本节我们学习了:
-
基本赋值:使用
=将值赋给变量,支持多变量赋值和解包赋值 -
增量赋值:
+=、-=、*=等,将运算和赋值合并为一步 -
海象运算符:
:=在表达式中同时赋值和返回值,Python 3.8+特性 -
增量赋值与对象:对可变对象和不可变对象的行为不同
赋值运算符是编程中使用频率最高的运算符之一,合理使用增量赋值和海象运算符可以让代码更简洁高效。
练习题
练习1
使用增量赋值运算符,编写程序计算1到100所有3的倍数的乘积。
练习2
使用海象运算符,编写程序不断接收用户输入,直到用户输入"quit"为止,并将所有非"quit"的输入存储在列表中并最终输出。
常见问题
Python中 = 和 == 有什么区别?
=是赋值运算符,用于将右边的值赋给左边的变量;==是比较运算符,用于判断两个值是否相等。两者完全不同,不能混用,在条件语句中使用=会导致语法错误。
海象运算符 := 在哪个Python版本中引入的?
海象运算符:=是Python 3.8版本中引入的新特性,允许在表达式中同时进行赋值和返回值。Python 3.8之前的版本不支持此运算符。
增量赋值 x += 1 和 x = x + 1 完全一样吗?
对于不可变对象(如整数、字符串),两者效果相同,都会创建新对象。但对于可变对象(如列表),+=会在原对象上修改(调用__iadd__方法),而x = x + [...]会创建新对象。这在有多个引用指向同一对象时会产生不同结果。
Python中支持多变量同时赋值吗?
支持。Python支持多种方式的多变量赋值:a, b, c = 1, 2, 3(并行赋值)、x = y = z = 0(链式赋值)、first, *rest = [1, 2, 3, 4, 5](解包赋值)等。
海象运算符在什么场景下最有用?
海象运算符最有用的场景包括:在while循环条件中避免重复调用函数(如正则匹配)、在列表推导式中避免重复计算昂贵的表达式、在条件判断中复用计算结果等。它可以让代码更简洁,减少不必要的重复计算。
本文涉及AI创作
内容由AI创作,请仔细甄别