show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次直接从模块中导入变量、函数
- from my_file import pi
- 导入show_time.pi
- 并作为pi变量使用
- from my_file import pi as my_pi
- 导入变量并重命名
- from my_file import pi
- 突发奇想~
- 这个import可以作为标识符来使用吗??🤔
- 可以将 import当 变量名吗?
- isidentifier函数
- 有不灵的 时候吗?
- 这怎么理解呢??🤔
- import 属于关键字
- 关键字
- 就有有特殊功能的字符串
- 都是 不能作为 标识符 的
- 类似的还有True
- 从标识符命名规则来说
- 字符串"True"符合命名规则
- 但是True有特殊含义
- 不能被声明和赋值
- 属于关键字
- 如果只有一个下划线
- 也是一个变量吗?
- 在游乐场里
- _下划线 意味着上次的值
- 如果是下划线开头的变量呢?
- 所以 _a 可以作为
- 模块内部的变量或者函数
- 如何理解内部呢?
- 在random模块中有很多变量和函数
- 有下划线 算是内部的
- 没有下划线 不算是内部的
- from random import *
- *代表所有的外部变量和函数
- 导入进来的
- 都是没有下划线的
- 也就是说内部的没有导入进来
- 如果就想要导入内部的变量呢?
- 点名导入带下划线的变量
- 就可以了
- 如果在变量名后面
- 加下划线呢?
- 在后面加上下划线
- 一般是为了 区分已经有的标识符
-
这样会对函数名max强行赋值
- 从此max函数就失效了
-
班里面有个张伟
- 新来一个就不能叫张伟
- 只能叫 大张伟 或者 小张伟
- 如果使用max 作为变量名
- 会把max函数 屏蔽掉
- 使用max_
- 不会屏蔽 max函数
- 系统定义的标识符
- 模块名
- 函数名
- 变量名
-
dunder变量都是有用意的
- 不要轻易破坏
-
再回头
- 来看看 a 这个变量 的 声明和赋值
a
两边并不加引号- 因为 这里的
a
是 变量标识符 - 而不是 字符串
- 如果加了双引号 就是字符串了
- 因为 这里的
- 在等号两端 都保留 有一个空格
- 可是 为什么要 加空格呢?
- 增加文档的可读性
- 这
不会
影响程序的执行速度
- 这
- 这两句话从何说起
- 这两句话来自于python之禅
- 现在到底有多少变量呢?
- 查询本地变量
- 有一个内置的函数叫做 locals
- 可以查询关于 locals 的帮助
- locals()返回的
- 是 一个 包含当前域中
- 所有变量的字典
- 是 一个 包含当前域中
- 声明和赋值 都使用等号
- 声明并赋值 变量a 之后
- 变量a 在内存里真的有位置了么?
- 这个id具体在计算机中的什么位置呢?
- 我们来看看
- id函数是什么意思?
- help(id)
- id返回 对象o的标识符
- o 确实在内存中 有了位置
- 但是如果 我们给变量新赋 一个值
- o 确实在内存中 有了位置
- 那么 存储变量的位置
- 还是那个 内存地址 么?
- 虽然 a这个变量名 没有变
- 但是 id(a)变了
- a所指向的地址空间变了
- 也就是说
- a这个容器的 内存位置没变
- 但是 a容器中 存的地址引用变了
- 所指向的 变量
- 在内存中的地址引用 变了
- 所指向的 变量
- 两次赋值 都是存储到a这个 变量名里面
- 第二次赋值 和 第一次赋值
- 有什么区别吗?
- 第二次赋值 和 第一次赋值
- 变量的声明和赋值究竟有什么不同
- 第一次赋值时
- 声明和赋值是同时完成的
- 第一次赋值时
- 如果是 第二次赋值 呢?
- 声明了之后
- 再有 等号赋值 就是 第二次赋值
- 是 纯赋值
- 没有声明新的变量
- 这次 了解了isidentifier的细节
- 关于 关键字
- 关于 下划线
- 如何查询 变量所指向的地址?
- id
- 如何查询 已有的各种变量?
- locals
- 如果 用一个变量a的值
- 给另一个变量b 赋值
- 是什么样的过程 呢??🤔
- 我们下次再说!👋