show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次导入了系统模块
__hello__
time
- 而且导入了自定义的模块
- import my_file
- 导入 自己定义的my_file.py
- 作为my_file模块
- 还可以使用my_file模块中的变量pi
- my_file.pi
- import my_file
- 但是不可以
- 直接 使用pi
- 如果
就
想直接使用pi- 又应该怎么办呢???🤔
- 我们上次有两个文件
- 被引用模块
- my_file.py
- 主体程序
- oeasy.py
- 被引用模块
vi my_file.py oeasy.py
- :ls效果
- 如下图所示
- 声明本地变量pi
- 并将my_file模块中
- pi的值(3.14)
- 赋给 本地变量pi
- 并将my_file模块中
- 运行结果
- 程序里 有哪些
- 是
本地
变量 吗?
- 是
- local就是本地
- 相比 dir()
- 只显示 本地变量名
- locals()
- 不但 显示本地变量
- 还显示 变量的值
- 本地变量有
- my_file 模块
- pi 浮点小数变量
- 还有 其他写法 吗?
- from my_file import pi
- 就相当于声明了本地变量pi
- 并将my_file模块中 pi的值(3.14)
- 赋给 本地变量pi
- locals()函数
- 可以查看 本地局部变量
- 本地变量
- my_file 没有被作为模块导入
- 只是将 my_file.pi 值 赋给 本地变量pi
- 不同 模块中 导入的
- 同名 模块
- 会冲突吗?
- 撞车是什么样子的!?
- 可以欣赏一下车祸现场吗?
- 声明了pi之后
- 先将 my_file模块中 pi的值(3.14)
- 赋给 本地变量pi
- 再将 math模块中
- pi的值(3.141592553589793)
- 赋给 本地变量pi
- 本地变量pi 只有一个值
- 3.141592553589793
- 最开始从 my_file模块中
- 赋过来的 3.14被撞飞了
- 本地变量名(local name)pi
- 被两次赋值
- 第二次赋值 覆盖了 第一次
- 这就是
- local name crash
- 本地变量名 撞车
- my_file.pi
- 被 math.pi 撞飞了
- my_file 中的 pi
- 被math中的 pi
- 替换掉了
- 覆盖了
- 消失了...
- 因此 要特别注意
不要使用from xxx import *
- 因为
- 这样 会把模块里面
- 所有的变量 导入进来
- 特别容易 撞车
vi test.py
- 导入 random中所有变量
from random import *
print(dir())
- 结果 导入了很多包
- 是不是都导入进来了呢?
from random import _e
print(dir())
- 结果
- 有下划线开头的变量
- 是隐藏变量
- 需要点名导入
- 点名 导入
- 带下划线的 隐藏变量
- 就可以了
- 如果在 变量名 后面
- 加 下划线
- 又是什么 意思 呢?
max_ = max(5,6)
- 再回顾我们使用的是
- Snake Naming Convention
- 蛇形命名法
位置和数量 | 作用 | 例子 |
---|---|---|
一个放前面 | 隐藏变量 | _e |
一个放后面 | 避免名字冲突 | max_ |
两个放两边 | 系统变量 | __builtins__ |
- 新 导进来的变量
- 可以 改名么?
- 可以的
- from ... import ... as ...
- 可以把变量名 更明确一点
- 其实就是 起个新名字
- 然后 进行赋值
- 任务达成!!!
- 总结一下 !✿✿ヽ(°▽°)ノ✿
- 这样的话
- 就有了 两个不同的 本地变量
- 不同pi值 分别来自 两个不同名字空间
- 什么 是 名字空间 呢?
- my_file 和 math都是名字空间
- 不同名字空间中
- 可以有相同的变量pi
- 他们彼此之间不受影响
- 不同的命名空间
- 可以同时存在
- 名字可彼此相互独立互不干扰
import this
- 可以导入this模块
- 展示 python之禅
- 名字空间是个好主意!
- 可以用名字空间保护各自空间中的变量
- 彼此之间不会覆盖
- 这次直接从模块中导入变量、函数
- from my_file import pi
- 导入my_file.pi
- 并作为 pi 使用
- from my_file import pi as my_pi
- 导入变量 并 重命名
- from my_file import pi
- 写一个大一点儿的程序??🤔
- 下次再说 👋