[oeasy]python072_名字空间是怎么玩的_from_import_as_导入_namespace
简介:
本文介绍了Python中名字空间和模块导入的使用方法。主要内容包括:1. **回忆上次内容**:回顾了之前导入系统模块(如`__hello__`、`time`)和自定义模块(如`my_file`),并介绍了如何导入和使用模块中的变量。2. **从shell开始**:展示了如何在命令行中编辑和切换文件,以及如何通过`import`语句引入模块。3. **修改oeasy.py**:演示了如何通过`import my_file`导入模块,并将模块中的`pi`赋值给本地变量`pi`。4. **locals()函数**:解释了如何使用`locals()`查看当前作用域内的本地变量及其值。
名字空间是怎么玩的_from_import_as_导入_namespace
回忆上次内容
my_file.pi
my_file模块中的变量pi
从shell开始
我们上次有两个文件
被引用模块
主体程序
修改oeasy.py
import my_file
pi = my_file.pi
print(pi)
locals()
import my_file
pi = my_file.pi
print(pi)
print(locals())
导入模块
import my_file as my_module
pi = my_module.pi
print(pi)
print(locals())
提问
from...import...
就相当于 声明了 本地变量pi
并将 my_file.pi的值(3.14)
赋给 本地变量pi
没导入 my_file模块
只导入 my_file.pi值
冲突现场
先将 my_file模块中 pi的值(3.14)
赋给 本地变量pi
pi的值(3.141592553589793)
赋给 本地变量pi
3.141592553589793
最开始从 my_file模块中
赋过来的 3.14被覆盖掉了
from ... import ... as ...
from ... import ... as ...
可以把变量名 更明确一点
其实就是 起个新名字
然后 进行赋值
my_pi
math_pi
分别来自 两个不同名字空间
名字空间(namespace)
不同名字空间中
可以 有 相同的 变量pi
他们 彼此之间 不受影响
python之禅最后一句
pep-8
标准库
第三方库
本地库
类别之间需要一个空行
https://peps.python.org/pep-0008/#imports
最终代码
math 是 系统类库 在前面
my_file 是 本地自建类库 在后面
之间有一个空行
from math import pi as math_pi
from my_file import pi as my_pi
print(locals())
总结
from my_file import pi as my_pi