Skip to content

Latest commit

 

History

History
204 lines (140 loc) · 3.99 KB

043-2686345-变量在内存内的什么位置_物理地址_id_内存地址_物理地址_pdb.sy.md

File metadata and controls

204 lines (140 loc) · 3.99 KB
show version enable_checker
step
1.0
true

变量名标识符

回忆上次内容

  • 上次讲了
    • 什么是变量
  • 变量变量
    • 的量
    • 就是变量
  • 各种系统、游戏
    • 就是由变量所组成的

图片描述

  • 声明就是 declaration

    • 把标识符 和 具体值 关联起来
    • 标识符 就是 变量的名字
    • 具体值 就是 赋给变量的值
  • 赋值 就是

    • 就是 assignment
      • 可以给变量 具体的值
  • 可以调试一下赋值语句了吗?🤔

从变量开始

  • 变量需要
    • 声明 declaration
    • 赋值 assignment

图片描述

  • 声明 declaration
    • 把标识符 和 类型 联系起来
    • 标识符 是 变量的名字
  • 赋值 assignment
    • 就是 把具体的值 赋给变量
  • 声明赋值语句 可以调试 吗?🤔

尝试调试

str1 = "oeasy"
str2 = "o2z"
  • :w|!pdb3 %
    • 保存当前文件
    • 并用pdb3进行调试

图片描述

  • 在这里 需要进入t.py 调试
    • 看看在这两行代码执行过程中
    • str1和str2的值究竟是多少

回忆pdb过程

  • pdb的意思 是
    • python 的 debug程序

图片描述

  • help
    • 可以查看所有命令
  • h p
    • 查看p命令的使用方法

调试

  • 第1行执行之前(红色)
    • str1和str2 都不存在
  • 第2行执行之前(绿色)
    • str1为存在,b不存在
  • 第2行执行之后(蓝色)
    • str1、str2 都存在

图片描述

  • 结论
    • 声明、赋值之前
      • 不能使用变量
    • 声明、赋值了之后
      • 才能使用变量
  • 可以看得 清清楚楚
  • 那这个变量具体存在哪儿呢?

具体位置 id

q #退出 pdb环境
  • 输出地址
str1 = "oeasy"
str2 = "o2z"
print(id(str1))
print(id(str2))
  • id函数
    • 可以 得到
    • 变量的 地址

图片描述

  • 什么地址?

内存地址

  • 程序被夹在到内存中
  • 变量也在内存中存储

图片描述

  • id函数
    • 是什么意思?

询问

图片描述

help(id)

  • id返回 对象obj的 标识符
    • obj 确实在内存中 有了位置

图片描述

  • 这些数字究竟是什么含义?

问问ai

图片描述

  • 但是 如果
    • 我们 给变量 再赋个新值
    • 那么 变量的 新物理地址
    • 还是 最初 那个地址 吗?

实践

  • 变量 str1
    • 数值变了
    • 所指向的内存位置
    • 也变了

图片描述

  • 为什么变了?

查询手册

help(id)
  • 返回对象的
    • 唯一标识地址
    • 要确保 唯一

图片描述

  • 原来那个地方存的是oeasy
    • 现在要一个新地方
    • 存o2z

图片描述

  • str1 和 str2 都为 'oeasy'
    • id相同怎么理解?

多次引用

  • 存着'oeasy'这块地方
    • 被两个 变量所指着
      • str1
      • str2

图片描述

  • 可以用str1的值
    • 对str2赋值吗?

总结

  • 这次我们 了解了 id 函数
    • id可以得到 变量
      • 在内存中的 物理位置

图片描述

  • 可以用变量对变量进行赋值吗?🤔
  • 我们下次再说!👋