[oeasy]python072_名字空间是怎么玩的_from_import_as_导入_namespace

072_namespace_名字空间_导入

072_namespace_名字空间_from_import_as_导入227 播放 · 0 赞同视频

点击可播放视频

名字空间是怎么玩的_from_import_as_导入_namespace 回忆上次内容

  • 上次导入了系统模块

  • __hello__

  • time

  • 自己 定义了 模块

  • my_file

  • 导入 my_file.py

  • 作为 自定义的

  • my_file模块

  • 可以使用

  • my_file.pi

  • my_file模块中的变量pi

  • 但不能直接 用pi

添加图片注释,不超过 140 字(可选)

  • 如果 就想 直接用pi

  • 又应该怎么办呢???🤔

从shell开始

  1. 我们上次有两个文件

  2. 被引用模块

  • my_file.py

  1. 主体程序

  • oeasy.py

vi my_file.py oeasy.py

  • :ls效果

添加图片注释,不超过 140 字(可选)

  • 依次打开了两个文件

添加图片注释,不超过 140 字(可选)

  • :b2

  • 切到oeasy.py

  • 可以直接输出pi吗?

修改oeasy.py import my_file pi = my_file.pi print(pi)

  • 如下图所示

添加图片注释,不超过 140 字(可选)

  • 声明本地变量pi

  • 并将my_file模块中

  • pi的值(3.14)

  • 赋给 本地变量pi

添加图片注释,不超过 140 字(可选)

  • 本地 都有 哪些 变量?

locals()

  • locals函数

  • 查询本地变量

import my_file pi = my_file.pi print(pi) print(locals())

  • 相比 dir()

  • 只显示 本地变量名

  • locals()

  • 不但 显示本地变量

  • 还显示 变量的值

添加图片注释,不超过 140 字(可选)

  • 本地变量 包括

  • my_file 模块

  • pi 浮点小数变量

  • 模块 可以 改名吗?

导入模块 import my_file as my_module pi = my_module.pi print(pi) print(locals())

  • 确实可以重命名

添加图片注释,不超过 140 字(可选)

  • 只想 引入 模块中的变量

  • 可以吗?

提问

添加图片注释,不超过 140 字(可选)

from...import...

  • from my_file import pi

  • 就相当于 声明了 本地变量pi

  • 并将 my_file.pi的值(3.14)

  • 赋给 本地变量pi

添加图片注释,不超过 140 字(可选)

  • 真的没有导入模块吗?

  • locals()函数

  • 查看 本地局部变量

添加图片注释,不超过 140 字(可选)

  • 本地变量

  • 没导入 my_file模块

  • 只导入 my_file.pi值

  • 赋给 本地变量pi

  • 不同 模块中 导入的

  • 同名 变量

  • 会冲突吗?

  • 可以观察到冲突现场吗?

冲突现场

  • 声明了pi之后

  • 先将 my_file模块中 pi的值(3.14)

  • 赋给 本地变量pi

添加图片注释,不超过 140 字(可选)

  • math模块中

  • pi的值(3.141592553589793)

  • 赋给 本地变量pi

  • 本地变量名(local name)pi

  • 被两次赋值

  • 第二次赋值 覆盖了 第一次

添加图片注释,不超过 140 字(可选)

  • 本地变量pi 只有一个值

  • 3.141592553589793

  • 最开始从 my_file模块中

  • 赋过来的 3.14被覆盖掉了

  • 新 导进来的变量

  • 也 可以 改名 吗?

from ... import ... as ...

  • 可以的

  • from ... import ... as ...

  • 可以把变量名 更明确一点

  • 其实就是 起个新名字

  • 然后 进行赋值

添加图片注释,不超过 140 字(可选)

  • 这样的话

  • 本地 就有了 两个不同的 pi

  • my_pi

  • math_pi

  • 分别来自 两个不同名字空间

添加图片注释,不超过 140 字(可选)

  • 任务达成!!!

  • 总结一下 !✿✿ヽ(°▽°)ノ✿

  • 什么 是 名字空间 呢?

名字空间(namespace)

  • my_file 和 math 就是名字空间

  • 不同名字空间中

  • 可以 有 相同的 变量pi

  • 他们 彼此之间 不受影响

添加图片注释,不超过 140 字(可选)

  • 不同的 命名空间

  • 可以 同时存在

  • 相同 变量名

  • 互不干扰

python之禅最后一句

  • 导入this模块

import this

  • 展示 python之禅

  • 名字空间 是 个好主意!

添加图片注释,不超过 140 字(可选)

  • 可以用 名字空间 保护

  • 各自空间中的 变量

  • 彼此之间 不会 覆盖

  • 目前 还有个 小瑕疵

pep-8

  • 导入 共分成 三类

  1. 标准库

  2. 第三方库

  3. 本地库

  4. 类别之间需要一个空行

  5. PEP 8 – Style Guide for Python Code | peps.python.org

添加图片注释,不超过 140 字(可选)

  • 根据这一原则我们修改代码

最终代码

  • 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

  • 导入my_file.pi

  • 并作为 pi 使用

  • from my_file import pi as my_pi

  • 导入变量 并 重命名

添加图片注释,不超过 140 字(可选)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值