Day18:变量赋值

1. 什么是变量赋值?

变量赋值是将某个值存储到一个变量中的过程。在Python中,变量赋值是实现程序逻辑的重要组成部分。通过赋值操作,程序可以动态地保存、修改和操作数据。

赋值通常使用 = 符号完成,格式如下:

python 复制代码
变量名 = 值

例如:

python 复制代码
x = 10  # 将整数10赋值给变量x
name = "Alice"  # 将字符串"Alice"赋值给变量name

2. Python中的赋值特点

  1. 动态类型语言

    Python是一种动态类型语言,变量在赋值时无需指定类型,解释器会根据值自动推断类型。

    示例:

    python 复制代码
    x = 42          # x是整数类型
    x = "Hello"     # x被重新赋值为字符串类型
    print(type(x))  # 输出:<class 'str'>
  2. 变量名即标签

    在Python中,变量名是对象的引用。赋值时,变量名"指向"内存中的对象,而不是直接存储值。多个变量可以指向同一个对象。

    示例:

    python 复制代码
    a = [1, 2, 3]
    b = a  # b和a指向同一个列表对象
    b.append(4)
    print(a)  # 输出:[1, 2, 3, 4]
  3. 多变量同时赋值

    Python支持多变量同时赋值,可以提高代码的简洁性。

    示例:

    python 复制代码
    x, y, z = 1, 2, 3  # 同时为x, y, z赋值
    a = b = c = 0      # 为多个变量赋相同的值
  4. 解构赋值

    Python支持从容器中解构赋值,将多个值赋给不同的变量。

    示例:

    python 复制代码
    data = (10, 20, 30)
    x, y, z = data  # 解构元组
    print(x, y, z)  # 输出:10 20 30

3. 变量赋值的类型

  1. 简单赋值

    使用 = 将值赋给变量。

    示例:

    python 复制代码
    num = 10  # 将10赋值给变量num
    text = "Hello"  # 将字符串赋值给变量text
  2. 链式赋值

    将同一个值赋给多个变量。

    示例:

    python 复制代码
    a = b = c = 5
    print(a, b, c)  # 输出:5 5 5
  3. 多变量赋值

    在一条语句中为多个变量赋值,值的数量必须与变量数量匹配。

    示例:

    python 复制代码
    x, y = 1, 2
    print(x, y)  # 输出:1 2
  4. 变量交换

    通过多变量赋值可以实现变量的交换,无需借助中间变量。

    示例:

    python 复制代码
    a, b = 5, 10
    a, b = b, a  # 交换a和b的值
    print(a, b)  # 输出:10 5

4. 深入理解变量赋值

  1. 赋值和对象引用

    在赋值操作中,变量名实际上是一个"标签",指向内存中的对象。如果变量被重新赋值,标签会指向新的对象。

    示例:

    python 复制代码
    a = [1, 2, 3]
    b = a
    b.append(4)
    print(a)  # 输出:[1, 2, 3, 4](a和b指向同一个列表)
  2. 浅拷贝与深拷贝

    如果需要将一个对象的副本赋值给另一个变量,而不是共享同一个对象,可以使用拷贝操作:

    • 浅拷贝: 拷贝对象的引用,修改可变对象的内容会影响副本。
    • 深拷贝: 创建一个全新的对象,完全独立于原对象。

    示例:

    python 复制代码
    import copy
    
    original = [1, [2, 3], 4]
    shallow = copy.copy(original)  # 浅拷贝
    deep = copy.deepcopy(original)  # 深拷贝
    
    shallow[1].append(5)
    print(original)  # 输出:[1, [2, 3, 5], 4](浅拷贝影响原对象)
    
    deep[1].append(6)
    print(original)  # 输出:[1, [2, 3, 5], 4](深拷贝不影响原对象)
  3. 可变与不可变对象赋值

    • 可变对象(如列表、字典):修改内容会影响其他指向同一对象的变量。
    • 不可变对象(如整数、字符串):重新赋值会创建新对象,变量标签指向新对象。

    示例:

    python 复制代码
    x = 10
    y = x
    x = 20
    print(y)  # 输出:10(不可变对象的赋值创建新对象)
    
    a = [1, 2, 3]
    b = a
    a.append(4)
    print(b)  # 输出:[1, 2, 3, 4](可变对象共享同一引用)

5. 课后练习

  1. 基本赋值

    定义一个变量 name,并将你的名字赋值给它。然后打印该变量的值。

  2. 多变量赋值

    编写一个程序,将一个元组 (5, 10, 15) 解构赋值给变量 x, y, z,并打印这些变量的值。

  3. 链式赋值

    使用链式赋值为三个变量 a, b, c 赋值为同一个整数 100,并打印它们的值。

  4. 变量交换

    编写一个程序,交换两个变量 a, b 的值,并打印交换后的结果。

  5. 拷贝练习

    编写一个程序,创建一个嵌套列表,分别使用浅拷贝和深拷贝操作。对拷贝后的列表进行修改,观察原列表是否受到影响。


6. 本章小结

本章详细介绍了Python中的变量赋值操作,包括基本赋值、多变量赋值、链式赋值和变量交换。同时,我们深入探讨了赋值背后的对象引用机制,以及浅拷贝与深拷贝的区别和应用场景。

相关推荐
灏瀚星空5 分钟前
从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——概率与统计基础 | 基础概念
笔记·python·学习·金融·概率论
Hellohistory11 分钟前
HOTP 算法与实现解析
后端·python
猫猫头有亿点炸11 分钟前
C语言大写转小写2.0
c语言·开发语言
伊织code12 分钟前
cached-property - 类属性缓存装饰器
python·缓存·cache·装饰器·ttl·property·cached-property
A达峰绮20 分钟前
设计一个新能源汽车控制系统开发框架,并提供一个符合ISO 26262标准的模块化设计方案。
大数据·开发语言·经验分享·新能源汽车
明明跟你说过28 分钟前
深度学习常见框架:TensorFlow 与 PyTorch 简介与对比
人工智能·pytorch·python·深度学习·自然语言处理·tensorflow
BS_Li29 分钟前
C++类和对象(上)
开发语言·c++·类和对象
搏博30 分钟前
专家系统的基本概念解析——基于《人工智能原理与方法》的深度拓展
人工智能·python·深度学习·算法·机器学习·概率论
yzx99101331 分钟前
决策树随机深林
人工智能·python·算法·决策树·机器学习
梓羽玩Python42 分钟前
月之暗面最新开源模型!Kimi-Audio:革新多模态音频处理,统一音频理解、生成与对话!
人工智能·python·github