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中的变量赋值操作,包括基本赋值、多变量赋值、链式赋值和变量交换。同时,我们深入探讨了赋值背后的对象引用机制,以及浅拷贝与深拷贝的区别和应用场景。

相关推荐
早上好啊! 树哥2 小时前
JavaScript Math(算数) 对象的用法详解
开发语言·javascript·ecmascript
Tomorrow'sThinker2 小时前
25年1月更新。Windows 上搭建 Python 开发环境:PyCharm 安装全攻略(文中有安装包不用官网下载)
ide·python·pycharm
noravinsc2 小时前
requests请求带cookie
开发语言·python·pycharm
风_流沙4 小时前
python pandas 对mysql 一些常见操作
python·mysql·pandas
程序猿(雷霆之王)5 小时前
C++——继承
开发语言·c++
自律小仔5 小时前
桌面开发 的变量声明(Variable Declaration)核心知识
开发语言·后端·golang
qq_273900235 小时前
pytorch torch.scatter_reduce函数介绍
人工智能·pytorch·python
ouyang_ouba5 小时前
pygame飞机大战
开发语言·python·pygame
浮生如梦_5 小时前
C#Halcon跨窗口颜色识别
开发语言·图像处理·计算机视觉·c#·视觉检测
叫我阿呆就好了5 小时前
C 实现植物大战僵尸(三)
c语言·开发语言