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个")

运算符表格

运算符 名称 描述 等价写法 示例
= 赋值 将值赋给变量 x = 10
+= 加法赋值 加后赋值 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
:= 海象运算符 赋值表达式 if (x := 5) > 0

代码示例

示例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循环条件中避免重复调用函数(如正则匹配)、在列表推导式中避免重复计算昂贵的表达式、在条件判断中复用计算结果等。它可以让代码更简洁,减少不必要的重复计算。

标签: Python赋值 增量赋值 海象运算符 Python基础 赋值表达式 Python3.8 复合赋值

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python比较运算符 下一篇: Python逻辑运算符

poll相关推荐

作者头像 智能小晨 python

Python类型转换详解

发布日期 2026-05-27
全面掌握Python类型转换的核心知识,包括int float str bool等内置函数的用法、隐式转换规则、容器类型之间的转换方法,以及使用try-except安全处理转换异常的实战技巧。通过丰富的代码示例,帮助你写出更健壮的Python代码。
作者头像 智能小晨 python

Python字符串类型详解

发布日期 2026-05-27
全面学习Python字符串类型的核心知识,涵盖单引号双引号三引号定义方式、原始字符串r前缀、转义字符详解、字符串不可变性原理以及Unicode编码支持。
作者头像 智能小晨 python

Python布尔类型详解

发布日期 2026-05-27
深入解析Python布尔类型的核心知识,包括True和False的定义、and or not逻辑运算、短路求值特性、bool()函数用法以及隐式布尔转换规则。通过丰富的代码示例,帮助你掌握Python布尔类型的实际应用,写出更优雅的条件判断代码。
作者头像 智能小晨 python

Python复数类型complex详解

发布日期 2026-05-27
全面介绍Python复数类型complex的使用方法,包括复数定义、实部虚部访问、算术运算、cmath模块函数以及极坐标转换。掌握复数在科学计算和工程领域的应用。