Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0047
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 配套视频
- 声明、赋值之
前不能使用变量
- 声明、赋值了之
后才能使用变量
- 顺序 必须 清清楚楚
- 那 声明的 这俩变量
- 具体存在
哪儿呢? 🤔
- 具体存在
- 收获 新函数 id
- id 就是
- identity
- 唯一的身份标识号
- 身份证号
- id函数怎么用呢?
q #退出 pdb环境
- 从pdb退回到vim
- 进入游乐场
s1 = "oeasy"
id(s1)
- 结果
- s1的id是一长串数字
- 数值 和 截图不一样 很正常
- 只要是 一串数字 就对了
- 这串数字
什么含义?🤔
- 这串数字 是
- 内存地址的 整数值
- 什么是内存?🤔
内存- 随机存储器
- Random Access Memory
- RAM
- py程序 运行在
内存中- 其中变量 也存储在
内存中 - 每次运行的状态不同
- 分配的位置也不同
- 其中变量 也存储在
- 内存里面有很多字节
- 就像 楼房里面的小房间
- 变量就存储在小房间中
- 内存地址 就是 小房间的门牌号码
- 回游乐场 去问问 python本人
- id函数 是什么意思?🤔
help(id)
- id返回 的是
- 对象 的
唯一标记 - the identity of an object
- 对象 的
- 对于
- 不断变化 的 对象
- 每个 对象 都有
唯一标记idnetity
- 两个变量
- id会相同吗?
- 退回游乐场
s1 = "oeasy"
s2 = "o2z"
print(id(s1))
print(id(s2))
- 两个变量s1、s2
- 确实id不同
- 具体数值 不一样 没事的
- 运行时 内存现状 不一样
- 就会导致 分配地址不一致
- 如果 两个变量s1、s2
- 存的都是 "oeasy" 呢?
s1 = "oeasy"
s2 = "oeasy"
print(id(s1))
print(id(s2))
print(id(s1) == id(s2) )
- 结果
- s1、s2
- 存的内容相同
- 都是 "oeasy"
- id 居然
也相同 ?!!! 😦
- 存的内容相同
- id 不是 变量
唯一身份证 吗?- 两个 不同的变量
id相同 - 怎么理解?🤔
- 两个 不同的变量
- 对象的id
唯一标识地址确实是要确保唯一- unique
-
simultaneously
- [ˌsɪməlˈteɪniəsli]
- 同时地
-
同时存在的各个对象
- 都得确保
- 有唯一的标识
-
到底
什么是唯一的?
- 存'oeasy' 的
- 这块内存地址
- 是
唯一的
- 这块地址
- 被
两个变量 所引用- s1
- s2
- 两个变量都引用 这个房间号
- 被
- 但是 如果
- 又 给s1 再赋个
新值 - 那么 s1
- 会 引用
新的地址 吗?🤔
- 会 引用
- 又 给s1 再赋个
s1 = "oeasy"
s2 = "oeasy"
print(id(s1))
print(id(s2))
print(id(s1) == id(s2) )
s2 = "o2z"
print(id(s1))
print(id(s2))
print(id(s1) == id(s2) )
- s2 最初 引用的是
- 存"oeasy"的地址
- 现在 s2 要存"o2z"
- 得换
新地址
- 得换
- 如果s1所存储的字符串
- 也变了呢?
s1 = "oeasy"
s2 = "oeasy"
print(id(s1))
print(id(s2))
print(id(s1) == id(s2) )
s1 = "ooo"
s2 = "o2z"
print(id(s1))
print(id(s2))
print(id(s1) == id(s2) )
- 原来存"oeasy" 那片地址
- 怎么办呢?
- 系统 发现
- 这块 存着 "oeasy"字符串 的地址、
- 没有对象 再引用
- 就垃圾回收了
- 其他语言
- 一般还需要 手动垃圾回收
- python 直接就给 自动回收了
- 这次我们 了解了
id 函数- id函数 可以得到
- 变量对象 所引用的
唯一内存地址
s1 = "oeasy"
A = 10
- 现在都是
- 用 字面量(literal)
- 给变量
赋值
- 可以
- 用
变量 - 给变量
赋值吗? 🤔
- 用
- 我们下次再说!👋
- 配套视频
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。


















