show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解的是
- 转义字符 反斜杠
- 转义转义 转化含义
- 反斜杠和后面的字符
- 两个一起 构成转义序列
- 转化了含义
- 字符串 变量 究竟是如何存储的呢??🤔
- 先自省一下
- 自省(introspection)
- 通过 type 函数获得
- 变量o 的类型
str
- 就是 字符串 string
- 通过 id 函数获得
- 变量o 的 唯一标志id
- 也就是 在内存中的地址
- 这个地址是一串数字
- 内存地址(
140547862959216
)- 存储了 "oeasy"字符串
- 地址 被赋给s_title变量名
- str 可以作为变量名吗?
- str 是 字符串类名
- 但是一旦被赋值 称为变量名
- str就无法转化了
-
特别注意❗❗❗
- 初学者要特别注意
- 不要将str作为变量名!📢
-
可以 用字符串变量
- 给 字符串赋值 吗?
- s1 = "oeasy"
- 这个字符串长度 5 个字节
- oeasy
- s1 位于 139633377299288
- 这个字符串长度 5 个字节
- s2 = "o2z"
- 这个字符串长度 3 个字节
- o2z
- s2 位于 139633366623112
- 这个字符串长度 3 个字节
- s2 = s1
- 令s2 位于 id(s1)
- s2 和 s1 都指向 原来 s1 的地址
- 会被系统垃圾回收
- 点击 Live Programming Mode
- 然后进入到实时编程模式
- 这种直接的计算
- 并不能为内存中的变量赋值
- 没有变量接收这些值
- 这些值也就没有被任何变量引用
- 这些值也就被垃圾回收了
- 在左边的帧(frames)的位置是空的
- 什么是frame呢?
- frame 也叫帧
- 本意是画框
- 现在尝试赋值
- 把变量 画到画框里去
- 有两个变量
- s1
- s2
- 他俩 在 调用(call)栈(stack)的 帧(frame)上
- 画出来了
- 看得见了
- 可以用 prev 和 next 控制流程运行
s1 = "oeasy"
s2 = "o2z"
print(id(s1),id(s2))
s2 = s1
print(id(s1),id(s2))
- 运行效果
- 最终引用情况
- 字符串"oeasy"
- 有两个变量引用(s1、s2)
- 字符串 "o2z"
- 原来 s2 所指向
- 现在没有变量引用了
- 字符串"oeasy"
- 这次了解的是
字符串
- 可以用str
- 将整型数字 转化为 字符串
- 但是 不要让str成为变量名
- 除了字符串
- 还有什么变量类型?🤔
- 下次再说!👋