show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次导入了系统模块
__hello__
time
- 而且导入了自定义的模块
- import show_time
- 导入 自己定义的show_time.py
- 作为show_time模块
- 还可以使用show_time模块中
的
变量pi- show_time
.
pi
- show_time
- 导入 自己定义的show_time.py
- import show_time
- 但是不可以直接 直接使用pi
- 如果我
就
想直接使用pi - 应该怎么办呢???🤔
- 如果我
- 我们上次有两个文件
- 被引用模块
- my_file.py
- 主体程序
- oeasy.py
- 被引用模块
vi my_file.py oeasy.py
- :ls效果
- 如下图所示
- 声明本地变量pi
- 并将show_time模块中pi的值(3.14)
- 赋给 本地变量pi
- 运行结果
- 程序里面有哪些是本地变量吗?
- locals()显示本地变量
- 本地变量有
- myfile
- pi
- 还有其他写法吗?
- from my_file import pi
- 就相当于声明了本地变量pi
- 并将show_time模块中pi的值(3.14)
- 赋给 本地变量pi
- locals()函数
- 可以查看本地局部变量
- 本地变量
- 没有my_file
- 只有pi
- 本地变量会撞车吗?
- 撞车是什么样子的!?
- 可以欣赏一下车祸现场吗?
- 声明了pi之后
- 先将my_file模块中pi的值(3.14)
- 赋给 本地变量pi
- 再将math模块中pi的值(3.141592553589793)
- 赋给 本地变量pi
- 先将my_file模块中pi的值(3.14)
- 本地变量pi只有一个值
- (3.141592553589793)
- 最开始从show_time.pi中赋过来3.14被撞飞了
- 本地变量名(local name)pi
- 被两次赋值
- 第一次赋值被覆盖了(crash)
- 这就是 local name crash
- show_time.pi 被 math.pi 撞飞了
- my_file 中的 pi
- 被math中的 pi
- 替换掉了
- 覆盖了
- 消失了...
- 因此要特别注意尽量
不要使用from xxx import *
- 因为这样会把模块里面所有的变量引入进来
- 特别容易撞车
- 那可以给导入进来的变量改名么?
- 可以的
- 这样可以把变量名更明确一点
- 其实就是又起了个名字
- 然后进行赋值
- 任务达成!!!
- 总结一下 !✿✿ヽ(°▽°)ノ✿
- 这样的话
- 就有了两个不同的本地变量
- 值分别来自两个不同名字空间的pi
- 什么是名字空间呢?
- my_file 和 math都是名字空间
- 不同名字空间中
- 可以有相同的变量pi
- 他们彼此之间不受影响
- 不同的命名空间
- 可以同时存在
- 名字可彼此相互独立互不干扰
- 名字空间是个好主意!
- 可以用名字空间保护各自空间中的变量
- 彼此之间不会覆盖
- 这次直接从模块中导入变量、函数
- from my_file import pi
- 导入show_time.pi
- 并作为pi变量使用
- from my_file import pi as my_pi
- 导入变量并重命名
- from my_file import pi
- 突发奇想~
- 这个import可以作为标识符来使用吗??🤔
- 下次再说 👋