-
上次我们 了解了 id 函数
-
id函数 可以得到
-
变量对象 所引用的 唯一内存地址
-
现在都是
-
用 字面量(literal)
-
给变量 赋值
变量赋值
s1 = "oeasy" s2 = s1 print(id(s1)) print(id(s2)) print(id(s1) == id(s2))
-
s2 所指向的 内存地址
-
就是s1 所在的内存地址
-
地址是 同一个
-
两个变量 都指向了 这个 地址
-
完成了 变量的复制
重新赋值
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引用的 没变
-
用变量 给变量赋值
-
就和 用字面量 给变量赋值一样
-
变量复制 真的很神奇!!!
-
也许 您 问了
-
这 神奇在 哪儿呢?????
-
从 变量 的 自我复制
-
到 程序 的 自我复制
-
再到 硬件载具 的 自我复制
-
a 是个
-
数字类型 变量
-
引用地址
-
9788960
-
声明 b变量
-
并且把 a所指向变量 的 地址
-
赋给 容器b
-
a 和 b
-
引用 同一个 地址
-
此地址 存的值 是1
-
对a重新赋值后
-
a 引用了 新地址 (9788992)
-
b 依然引用 老地址
-
先算右边的等号
-
再算左边的等号
-
这次
-
所赋的值 很大
-
不在 常用地址范围 中
-
属于 边远地址
-
在 等号两边 都加上逗号
-
变量名 加上逗号
-
要赋的值 也加上 逗号
-
这种情况 要经过
-
unpack
-
解包过程
-
将(4, 5)进行解包
-
解成 4和5
-
分别赋给 a和b
模块类型
import time type(time)
-
import time之后
-
观察 id(time)
-
除了 变量 和 模块
-
函数(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)
-
回忆一下
-
这个 range怎么
-
输出ASCII码表?
黑暗森林
for num in range(0, 128): if num % 8 == 0: print() print(chr(num), end="\t")
-
所有对象
-
变量 variable
-
模块 module
-
函数 function
-
类 class
-
都有 自己所属的 类型
-
也都 在内存中 引用 唯一位置(id)
-
这些数字 组成了 python系统
-
现在 已经声明了 哪些变量 ?????
-
可以 查 吗?????