导入import 回忆上次内容
- 上次学习了
- try
- except
- 注意要点
- 半角冒号
- 缩进
- 输出错误信息
- 有错就报告
- 不要隐瞒
- 否则找不到出错位置
- 还可以用traceback把
- 系统报错信息原样输出
- 但是代码量好多啊
- 10多 行了 🤯
- 可以把他输入部分和输出部分么?🤔
- 我们先试试
- 怎么引用 其他的py文件
构建环境
- 先新建一个namespace文件夹
- 然后进入这个文件夹
- 新建两个文件
- 被引用模块
- my_module.py
- 主体程序
- oeasy.py
添加图片注释,不超过 140 字(可选)
- 然后进去
- 编辑这两个文件
- vi -o my_module.py oeasy.py
- -o 是分窗口编辑文件
效果
- 结果如下图所示
添加图片注释,不超过 140 字(可选)
- oeasy.py中输入
- import my_module
- my_module.py中输入
- print("in another")
保存并运行
- ctrl+k 切换到上方windows
- ctrl+j 切换到下方windows
添加图片注释,不超过 140 字(可选)
- :wqa
- 全部保存并退出
- w 的意思是先保存
- q 退出vim
- a 代表 all buffers 所有缓存
运行结果
- 运行的是oeasy.py
- 输出了"i am my_module.py"
- 这说明
- 导入成功了
添加图片注释,不超过 140 字(可选)
- 运行的是
- oeasy.py
- oeasy.py中导入了
- my_module.py
- my_module.py中
- 输出了 "i am my_module.py"
- 通过导入my_module.py
- 执行了其中的代码
- 导入对应的关键词import
- 应该如何理解呢?
import
- 进口(import)
- 这里指的是导入模块
- 这也是python强大之处
- 可以导入各种使用的包来使用
添加图片注释,不超过 140 字(可选)
- 可以导入多个文件吗?😱
导入多个文件
- 上图建议的是
- 不同模块分行导入
添加图片注释,不超过 140 字(可选)
- 导入除了可以调用对方代码
- 还能做什么呢?
尝试引用包内变量
添加图片注释,不超过 140 字(可选)
- 可以在my_module.py中定义变量
- 在oeasy.py中引用吗?
尝试运行
添加图片注释,不超过 140 字(可选)
- pi没有找到😭
添加图片注释,不超过 140 字(可选)
- 不慌
- 好饭不怕晚
- 不是把这些字节码都运行了么?
- 但是这里面有个作用域(namespace)的问题
- i 属于 my_module.py
- 而不属于oeasy.py
- 所以直接运行找不到i
- 那怎么办?
修改
- 只要说清楚这个i来自于my_module就可以了
- 用一个点(.)
- 就可以说明从属关系
- 点(.)的意思是的
- 在 my_module . pi
- 就是 在my_module 的 i
添加图片注释,不超过 140 字(可选)
- :wa
- write all
- 两个文件都保存
- :!python3 %
- 用外部命令python3运行当前文件
添加图片注释,不超过 140 字(可选)
- pi找到了😌
- 在my_module.py中
- pi就是一个标准的变量声明赋值
- 如果我就想在 oeasy.py 中直接使用 pi
- 可能么?
修改
- 声明了一个变量pi
- 并把mymodule.i的值赋给他
添加图片注释,不超过 140 字(可选)
- 还有其他写法吗?
from...import...
- 这句话好像好使
添加图片注释,不超过 140 字(可选)
- local()函数
- 可以查看本地局部变量
添加图片注释,不超过 140 字(可选)
- 本地变量会撞车吗?
撞车(local name crash)
添加图片注释,不超过 140 字(可选)
- 因此要特别注意尽量
- 不要使用from xxx import *
- 这种容易撞车的语句
添加图片注释,不超过 140 字(可选)
- 撞车是什么样子的!?
- 可以欣赏一下车祸现场吗?
车祸现场
添加图片注释,不超过 140 字(可选)
- my_module.pi 被 math.pi 撞飞了
添加图片注释,不超过 140 字(可选)
- 这其实也是名字空间(namespace)的意义
namespace
- 名字空间是个好主意!
添加图片注释,不超过 140 字(可选)
- 那可以给导入进来的变量改名么?
from ... import ... as ...
添加图片注释,不超过 140 字(可选)
- 可以的
- 这样可以把变量名更明确一点
- 其实就是又起了个名字
- 然后进行赋值
添加图片注释,不超过 140 字(可选)
- 任务达成!!!
- 总结一下 !✿✿ヽ(°▽°)ノ✿
总结
- 我们这次导入了外部的py文件
- import my_module
- 导入一个自己定义的模块
- 可以使用my_module中的变量
- 不能 直接使用 my_module.py文件中的变量
- 只要加my_module.作为前缀就可以
- 直接导入导入变量、函数
- from my_module import pi
- 可以导入my_module.pi 并作为pi变量使用
- from my_module import pi as my_module_pi
- 导入变量并重命名
- 上次那个苹果香蕉统计程序
- 能封装成文件模块
- 再导入么?🤔