[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _

简介: 本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。

变量名标识符

回忆上次内容

  • 上次我们 了解了 id 函数
  • id函数 可以得到
  • 变量对象 所引用的 唯一内存地址

s1 = "oeasy"

A = 10

  • 现在都是
  • 用 字面量(literal)
  • 给变量 赋值

  • 可以
  • 变量
  • 给变量 赋值 吗? 🤔

变量赋值

s1 = "oeasy"

s2 = s1

print(id(s1))

print(id(s2))

print(id(s1) == id(s2))

  • 将s1的值
  • 赋给s2
  • s2 所指向的 内存地址
  • 就是s1 所在的内存地址

图解

  • 地址是 同一个
  • 两个变量 都指向了 这个 地址
  • 完成了 变量的复制

  • 为什么要
  • 用 变量
  • 一个变量 赋值 呢?

指向

  • 比如 要让
  • 香蕉 和 苹果 价格相同

  • 可以 将 苹果的价格
  • 赋给 香蕉
  • 价格就一样
  • 如果 此时
  • 对s2 再赋值 呢?

重新赋值

s1 = "oeasy"

s2 = s1

print(id(s1))

print(id(s2))

print(id(s1) == id(s2))

s2 = "o2z"

print(id(s1))

print(id(s2))

print(id(s1) == id(s2))

  • 将 'o2z' 赋给 s2 后
  • s2引用的 内存地址
  • s1引用的

再图解

  • 用变量 给变量赋值
  • 就和 用字面量 给变量赋值一样

  • 变量复制 真的很神奇!!!
  • 也许 您 问了
  • 这 神奇在 哪儿呢?🥸

自我复制

  • 生命的基本特征
  • 就是 自我复制

  • 变量 的 自我复制
  • 程序 的 自我复制
  • 再到 硬件载具 的 自我复制
  • 机器 逐渐 具有生命
  • 变成 具身智能
  • Embodied Artificial Intelligence

速度

  • 而且 通过软件
  • 完成复制
  • 速度 比 生物快太多了
  • 很快就会有
  • 100个副本
  • 可以干活了

  • 甚至 矩阵
  • 完成 交互和融合
  • 速度惊人

声明变量

  • 声明 a 是个 变量
  • 并赋值为1
  • a 是个
  • 数字类型 变量
  • 引用地址
  • 9788960
  • 通过 id(a)得到
  • 地址里
  • 存的值 是1

  • 声明 b变量
  • 并且把 a所指向变量 的 地址
  • 赋给 容器b
  • 变量b
  • 类型 与a相同
  • 引用地址 也与a相同
  • a 和 b
  • 引用 一个 地址
  • 此地址 存的值 是1
  • 如果 把2
  • 再赋给a 呢?

重新赋值

  • 对a重新赋值后
  • a 引用了 地址 (9788992)
  • b 依然引用 地址

  • 可以 对两个变量
  • 一起 赋值 吗?

试一试

  • 动手试一试

a = b = 3

  • 可以吗?

连等赋值

  • 一行之中
  • 可以给
  • 多个变量赋值

  • 这就相当于 两次赋值
  1. 先算边的等号
  • b = 3
  • 将 3 赋给 b
  1. 再算边的等号
  • a = b
  • 将 b 赋给 a
  • 个等号
  • 次 赋值
  • 如果 所赋的值 很大 呢?

两个等号

  • 这次
  • 所赋的值 很大
  • 不在 常用地址范围 中
  • 属于 边远地址
  • 但是
  • a和b 所指向的地址
  • 仍然 是 同一个地址

  • 逗号分隔
  • 输出两个变量的方式叫做
  • pack
  • 打包

  • 能否 给
  • 打好包 两个 变量
  • 不同的 值 ?

同一行 赋不同值

  • 在 等号加上逗号
  • 变量名 加上逗号
  • 要赋的值 加上 逗号

  • 这种情况 要经过
  • unpack
  • 解包过程
  • 将(4, 5)进行解包
  • 解成 4和5
  • 分别赋给 a和b

  • 除了 变量
  • 导入的模块 地址吗?

模块类型

import time

type(time)

  • time的类型是
  • module
  • 模块

  • 模块 也有地址吗?

模块地址

  • import time之后
  • 观察 id(time)

id(time)

  • 模块
  • module
  • 模块 也有自己的地址

  • 除了 变量 和 模块
  • 函数(function) 有 地址 吗?

函数 地址

id(print)

id(ord)

id(chr)

id(id)

  • 函数 也有 地址
  • 唯一标识

  • 还有什么也有地址吗?

更多

id(range)

id(type)

id(int)

id(str)

  • 为什么 这哥几个
  • 数值 这么小?

  • 他们 属于 什么类型 呢?

class 类型

type(type)

type(int)

type(str)

type(range)

  • 他们本身就是
  • 类型
  • type

  • 回忆一下
  • 这个 range怎么
  • 输出ASCII码表?

黑暗森林

for num in range(0, 128):

   if num % 8 == 0:

       print()

   print(chr(num), end="\t")

  • 遍历了ascii码表

总结

  • 这次我们 了解了
  • 变量赋值
  • 连等赋值
  • 解包赋值
  • 所有对象
  • 变量 variable
  • 模块 module
  • 函数 function
  • 类 class
  • 都有 自己所属的 类型
  • 也都 在内存中 引用 唯一位置(id)
  • 这些数字 组成了 python系统

  • 现在 已经声明了 哪些变量 ?🤔
  • 可以 吗?🤔
  • 我们下次再说!👋
相关文章
|
6月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
264 1
|
8月前
|
数据处理 开发工具 开发者
requirement.txt 管理python包依赖
在 Python 项目中,`requirements.txt` 用于记录依赖库及其版本,便于环境复现。本文介绍了多种生成该文件的方法:基础方法使用 `pip freeze`,进阶方法使用 `pipreqs`,专业方法使用 `poetry` 或 `pipenv`,以及手动维护方式。每种方法适用不同场景,涵盖从简单导出到复杂依赖管理,并提供常见问题的解决方案,帮助开发者高效生成精准的依赖列表,确保项目环境一致性。
2382 4
|
人工智能 Python
[oeasy]python082_变量部分总结_variable_summary
本文介绍了变量的定义、声明、赋值及删除操作,以及Python中的命名规则和常见数据类型。通过示例讲解了字符串与整型的基本用法、类型转换方法和加法运算的区别。此外,还涉及异常处理(try-except)、模块导入(如math和random)及随机数生成等内容。最后总结了实验要点,包括捕获异常、进制转化、变量类型及其相互转换,并简述了编程中AI辅助的应用策略,强调明确目标、分步实施和逐步巩固的重要性。更多资源可在蓝桥、GitHub和Gitee获取。
325 97
|
12月前
|
人工智能 Python
[oeasy]python089_列表_删除列表项_remove_列表长度_len
本文介绍了Python列表(list)的操作方法,重点讲解了`remove`方法的使用。通过实例演示如何删除列表中的元素,探讨了`ValueError`异常产生的原因,并分析了时间复杂度O(n)的概念。同时提及了`clear`方法清空列表的功能及`len`函数获取列表长度的用法。最后以购物清单为例,展示列表的实际应用场景,并预告快速生成列表的方法将在后续内容中介绍。
334 62
|
11月前
|
存储 索引 Python
[oeasy]python093_find方法_指数为负数_index_实际效果
本文介绍了Python中`find`方法与索引(index)的使用,包括负数索引的实际效果。回顾了`eval`函数的应用,并强调类名如`str`、`int`、`list`不可用作变量名以避免覆盖。通过示例解析了负数索引在字符串和列表中的作用,以及`index`方法的三个参数(value、start、stop)的用法。同时对比了`index`和`find`方法的区别:`index`找不到子串时抛出`ValueError`,而`find`返回-1。最后总结了正负索引的使用场景及两者的特性,提供了相关学习资源链接。
508 8
|
人工智能 Java 数据安全/隐私保护
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
412 30
|
12月前
|
人工智能 索引 Python
[oeasy]python091_列表_索引_index_中括号_索引函数
本文介绍了Python中列表与字符串的索引及index函数用法。通过range生成列表,使用索引[]访问和修改列表元素,index函数查找元素位置。字符串支持索引访问但不可直接修改。还探讨了16进制数在Python中的表示方法,以及日期、月份等特殊字符的Unicode范围。最后总结了列表与字符串操作的区别,并预告后续内容,提供蓝桥云课、GitHub和Gitee链接供进一步学习。
289 20
|
12月前
|
Python
[oeasy]python086方法_method_函数_function_区别
本文详细解析了Python中方法(method)与函数(function)的区别。通过回顾列表操作如`append`,以及随机模块的使用,介绍了方法作为类的成员需要通过实例调用的特点。对比内建函数如`print`和`input`,它们无需对象即可直接调用。总结指出方法需基于对象调用且包含`self`参数,而函数独立存在无需`self`。最后提供了学习资源链接,方便进一步探索。
299 17
|
12月前
|
Python 容器
[oeasy]python090_列表_构造_范围_range_start_end_step_步长
本文介绍了Python中列表的生成方法,重点讲解了`range()`函数的使用。通过`range(start, stop, step)`可生成一系列整数,支持正负步长,但不支持小数参数。文章从基础的列表追加、直接赋值到复杂的应用场景(如生成等宽字体的月份列表),结合实例演示了`range()`的灵活性与实用性。最后总结了`range()`的关键特性:前闭后开、支持负数步长,并提供了进一步学习的资源链接。
374 12
|
12月前
|
索引 Python
[oeasy]python092_eval_衡量_转化为列表
本文探讨了 Python 中 `eval` 函数的用法及其与字符串和列表之间的转换关系。通过实例分析,展示了如何使用 `eval` 将字符串转化为对应的数据类型,例如将表示列表的字符串转回列表。同时,文章深入讲解了 `eval` 的工作机制,包括根据本地和全局变量对字符串进行计算的能力。此外,还提醒了命名变量时需避免覆盖内置类名(如 `str`、`int`、`list`)的重要性,以免影响程序正常运行。最后,简要提及字符串和列表索引中负数的应用,并为读者提供了进一步学习的资源链接。
260 2

推荐镜像

更多