Skip to content

Latest commit

 

History

History
342 lines (234 loc) · 6.34 KB

071-970845-我可以自己做一个模块吗_自定义模块_引入模块_import_diy.sy.md

File metadata and controls

342 lines (234 loc) · 6.34 KB
show version enable_checker
step
1.0
true

导入import

回忆上次内容

  • 模块 就是 封装好功能 的 部件

    • 如 wifi模块
  • 导入 __hello__ module模块

    • 可以 输出hello world!
    • 看起来很简单

图片描述

  • 我想要做个 自己的模块
    • 能行吗??🤔

新建文件 my_file

  • 尝试 编辑
    • my file.py
  • 注意
    • my file 之间 是 空格
vi my file.py
  • 运行结果
    • 打开了一个my

图片描述

  • 为什么会这样?

继续观察

  • :ls
    • 底行命令ls
    • 显示文件缓冲列表

图片描述

  • 可以看到打开了两个文件
    • my
    • file.py
  • 空格 成了
    • 切开 文件名的利刃
  • 这 怎么办 呢?

退回到shell

图片描述

  • :q!
    • 先强制 退回到 shell

下划线的 作用

  • 下划线 可以代替 空格
    • 而且 用在 文件名中
    • python模块名 需要使用 蛇形命名法
  1. 编辑 my_file.py
vi my_file.py
  1. 先试着引入__hello__
    • 注意hello两端各有两个下划线

图片描述

  1. 然后保存并运行

图片描述

  • 确实在my_file.py中
    • 引入了__hello__模块
  • 想要再把 time中的asctime
    • 导入 my_file

my_file.py

import __hello__
import time
print(time.asctime())
  • 保存并运行

图片描述

  • my_file.py如上图所示
    • 通过引入time包
    • 就可以得到当前时间了

图片描述

  • 这my_file.py
    • 也可以作为
    • 自定义模块 引入吗?

游乐场实战

  • 自定义模块 my_file
    • 可以 被导入

图片描述

  • my_file中有什么呢?
dir(my_file)
  • my_file 中包括
    • __hello__
    • time

图片描述

  • my_file 可以
    • 作为 模块
    • 被导入到 另一个 py文件 吗?

编辑oeasy.py

  • 退出游乐场
    • 回到vim
    • 再次编辑 my_file.py

图片描述

  • 键入:e oeasy.py
    • e 指的是 edit 编辑
    • 编辑一个oeasy.py

图片描述

  • 在vim中
    • 新建了 oeasy.py 的
    • 缓存(buffer)

缓存列表

  • :ls
    • 列出 所有打开的
    • 缓存(buffer)

图片描述

  • 如何 在缓存列表 中
    • 切换 当前buffer 呢?

切换 缓存

  • :b1
    • buffer1
    • 切换到 1号缓存文件
      • my_file.py
  • :b2
    • buffer2
    • 切换到 2号缓存文件
      • oeasy.py

图片描述

  • 这样 就可以 切换
    • 当前 编辑的 缓存
    • buffer

引入模块

  • 打开 oeasy.py

    • 并进行 编辑
  • 在oeasy.py中 只有 一句话

    • import my_file
    • 导入 my_file模块

图片描述

  • 保存并运行

运行结果

  • 虽然oeasy.py中

    • 只有 一句话
  • 但是通过 导入my_file模块

    • 实现了
      1. hello
      2. 报时

图片描述

  • 可以在 自己模块 里
    • 输出说明 吗?

自定义模块

  • 编辑my_file.py
import __hello__
import time
print(time.asctime())
print("This is my first module")
  • 在自己的模块 my_file中
    • 输出了 一句话

图片描述

  • 导入模块时

    • 完成输出
  • oeasy.py中

    • 可以使用
    • my_file模块中的 成员 吗?

切换缓存后

图片描述

  • 切换 缓存
    • 来到my_file.py
    • 把最后一行
    • 修改 为
    • pi = 3.14

图片描述

  • 可以在oeasy.py中
    • 访问到
    • my_file模块 中的
    • pi这个变量 吗?

查看 模块中的变量

  • my_file模块里
    • 都有些什么?
import my_file
print(dir(my_file))
  • my_file 里面有 导入的
    • 模块 __hello__
    • 变量 pi
    • 模块 time

图片描述

  • 怎么引入?🤔

尝试 引用模块中的 变量

  • 总共两句话
    • 1.导入my_file这个模块
    • 2.输出my_file模块中 pi这个变量

图片描述

  • 在oeasy.py中
    • 导入my_file模块之后
    • 尝试输出my_file.pi

图片描述

  • 输出成功!
  • 可以直接 输出pi 吗?

尝试直接输出pi

  • 尝试直接输出pi

图片描述

  • 尝试失败

图片描述

  • pi 是模块中的变量
    • 想用 就必须带上模块的名字
      • my_file.pi
      • 中间.的意思是
      • my_file 模块中的 pi属性

名字空间

  • 就像
    • 访问 time模块中的
    • asctime函数
    • time.asctime()
import time
print(time.asctime)
  • 名字空间 就是
    • 模块的名字
    • 成员的所有者
  • 直接找pi找不到
    • 带着名字空间
      • my_file.file
    • 就可以找到了

总结

  • 这次导入了系统模块
    • __hello__
    • time
  • 自己 定义了 模块
    • my_file
  • 导入 my_file.py
    • 作为 自定义的
    • my_file模块
  • 可以使用
    • my_file.pi
    • my_file模块中的变量pi
  • 但不能直接 用pi

图片描述

  • 如果 想 直接用pi
    • 又应该怎么办呢???🤔
  • 下次再说 👋