Skip to content

Latest commit

 

History

History
352 lines (246 loc) · 6.92 KB

058-970845-自定义模块_引入模块_import_diy.sy.md

File metadata and controls

352 lines (246 loc) · 6.92 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
  • 空格 成了
    • 分割 文件名的 符号
  • 这 怎么办 呢?

图片描述

  • :q!
    • 先退回到 shell

下划线的 作用

  • 下划线 可以代替 空格
    • 而且 用在 文件名中
  1. 编辑 my_file.py
vi my_file.py
  1. 先试着引入__hello__
    • 注意hello两端各有两个下划线

图片描述

  1. 然后保存并运行

图片描述

  • 确实在my_file.py中
    • 引入了__hello__模块
  • 为什么 要引入 模块 呢?

引入模块的意义

  • 我们可以通过
    • 引入 traceback
      • 使用跟踪调试
    • 引入__hello__
      • 完成输出 Hello world!
    • 引入 time
      • 使用各种时间函数

图片描述

  • time模块里面有个asctime函数
    • 可以得到当前时间
  • asctime 中的 asc 什么意思?

ascii

  • asc的意思是ascii
    • 是 7-bit的
    • 字符和序号的固定对应关系

图片描述

  • 黑暗森林 至今还是黑的
  • 把 time中的asctime
    • 导入 my_file

my_file

import __hello__
import time
print(time.asctime())

图片描述

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

图片描述

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

游乐场实战

图片描述

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

图片描述

  • my_file可以被导入到
    • 一个新的py文件吗?

编辑oeasy.py

图片描述

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

图片描述

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

缓存列表

图片描述

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

图片描述

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

引入模块

  • 打开 oeasy.py
    • 并进行 编辑

图片描述

  • 在oeasy.py中只有一句话
    • import my_file
    • 导入 my_file这个模块
    • 保存并运行

运行结果

  • 虽然oeasy.py中
    • 只有一句话

图片描述

  • 但是通过 导入my_file模块

    • 实现了
      1. hello
      2. 报时
  • 导入 对应关键词

    • import
    • 如何理解呢?

import

  • 进口(import)
    • 导入模块
    • 是 python的 强大之处
    • 可以导入 各种模块 来使用

图片描述

  • 可以导入多个文件吗?😱

导入多个文件

  • 下图建议的 是
    • 不同模块
    • 分行导入

图片描述

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

自定义模块

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这个变量 吗?

查看 模块中的变量

import my_file
print(dir(my_file))
  • my_file 里面有 导入的
    • 模块 time、 __my_file__
    • 变量 pi

图片描述

尝试 使用模块中的变量

  • 总共两句话
    • 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是有
    • 名字空间(namespace)的
  • 名字空间 就是
    • 模块的名字
    • my_file
    • 直接找pi找不到
    • 带着名字空间
    • 就可以找到了

总结

  • 这次导入了系统模块
    • __hello__
    • time
  • 而且导入了自定义的模块
    • import my_file
      • 导入 自己定义的my_file.py
      • 作为my_file模块
      • 还可以使用my_file模块中的变量pi
        • my_file.pi
  • 但是不可以
    • 直接 使用pi
  • 如果 想直接使用pi
    • 又应该怎么办呢???🤔
  • 下次再说 👋