[oeasy]python0141_自制模块_module_reusability_复用性

简介: [oeasy]python0141_自制模块_module_reusability_复用性

自制包内容 回忆上次内容

  • 上次导入了外部的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
  • 导入变量并重命名



  • 上次那个苹果香蕉统计程序
  • 能封装成文件模块
  • 再导入么?🤔


  • 我们来改造原始的 apple.py

建立文件夹

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

  • 进入文件夹
  • 准备编辑


  • 我想要把原来的apple.py拆成立两个py文件
  • input.py
  • 负责输入 两个数字
  • 分别是
  • 苹果的数量
  • 香蕉的数量



  • output.py
  • 负责计算水果总量
  • 并输出最终水果总数



  • 那python里面
  • 有没有现成的 input和output 模块呢?


尝试修改

  • 别重名了!

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

  • 看起来没有默认的input和output模块
  • 不怕模块重名了


  • 不过input好像是很重要的函数的名字

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

  • output.py 这个名字可以放心用
  • input 这个名字修改为 get_fruits.py

拆分文件

  • vi -o get_fruits.py output.py
  • 进入vim后

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

  • :windo r ../apple.py
  • 在两个窗口中都读取
  • ../apple.py
  • 上一层目录之下的apple.py



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

编辑

  • ctrl+j、ctrl+k
  • 可以切换当前活动(active)窗口


  • 修改代码 如下图所示

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

  • 注意这里是:wa|!python3 %
  • :wa的意思是
  • write all changed buffers
  • 把所有修改了的缓存都存盘


  • 然后再用python3来运行


运行结果

  • 运行输入部分的环节时
  • 没有问题


  • 运行输出部分的环节时
  • 出错了


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

  • 输入没有问题
  • 但是参数a、b
  • 好像没传过去?


调试程序

  • 从get_fruits.py到output.py的过程中
  • 好像没有传递成功?
  • 到底 a 是多少呢?
  • 输出看看



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

  • 给正确数据

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

  • a 根本没有被声明!

找到a

  • a 不认
  • a 是 getfruit 这个模块(module)里的变量
  • 给a加上namespace


  • get_fruits.a 认么?

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

  • 上码
  • 再战

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

  • 这次认了
  • 现在需要的就是赋值了

最终

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

  • 录入数据

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

  • 成功
  • 我们真的自制了一个输入模块


  • 为什么要把一个完成的程序
  • 拆成两个模块呢?


复用性Reusability

  • get_fruits.py作为 被导入的模块
  • 可以 导入统计程序中 计算水果总量
  • 也可以 导入计价程序中 计算水果价格
  • 还可以 导入比较程序中 比较哪种水果更多


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

  • 代码 可以在不同的模块之间复用
  • 以前用过什么 可复用的代码 吗?

复用的模块

  • 有个模块 我们经常使用
  • time


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

  • 我们可以感觉到 python 的可扩展性
  • 从各种 python 程序
  • 到底层的 python 各种辅助模块
  • python 代码复用就是这么容易
  • 这才是打一场人民战争的基础


  • 如今我们也写了自己的python模块
  • 这两个py文件
  • get_fruits.py
  • output.py
  • 之间是什么关系呢?


结构

  • 总共两个python文件
  • output.py 是主模块
  • get_fruits.py 是被引用的模块


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

  • 运行output.py主模块的时候
  • 导入了 被引用的get_fruits.py
  • 先录入


  • 然后输出


  • 如何理解 导入 呢?
  • 英文
  • import 导入
  • export 导出
  • 词根port 本意为港口


总结

  • 这次把 apple.py 拆分了
  • 拆成了
  • 输入
  • 主函数



  • 使用 引用模块中变量的时候
  • 要使用上包名
  • get_fruits.a
  • get_fruits.b



  • 最终
  • 拆分代码 成功!


  • 可以将程序 拆分成
  • 输入
  • 输出
  • 然后再由主函数调用吗?🤔



目录
相关文章
|
6天前
|
运维 数据安全/隐私保护 Python
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
40 14
|
1天前
|
关系型数据库 数据处理 数据库
Python中的异步编程:理解asyncio模块及其应用
在现代编程中,异步编程变得越来越重要。Python中的asyncio模块为开发者提供了强大的工具,帮助他们利用异步编程模式来处理高并发和IO密集型任务。本文将深入探讨asyncio模块的核心概念、基本用法以及实际应用场景,帮助读者更好地理解和运用Python中的异步编程技术。
|
2天前
|
开发者 Python
确保你的Python环境中已经安装了`python-docx`模块。如果还没有安装,可以通过pip来安装:
确保你的Python环境中已经安装了`python-docx`模块。如果还没有安装,可以通过pip来安装:
8 1
|
4天前
|
物联网 Java 调度
Python中asyncio模块的实际使用
celery和asyncio写代码都差不多,但asycio用起来更简单,更适用于网络并发请求。如果用于做耗时任务处理也可以,针对如果耗时任务只有一个,明显用celery把耗时任务转到后台处理更为合适。
|
5天前
|
机器学习/深度学习 数据采集 安全
Python中的random模块及相关模块详解
随机函数是计算机科学中一个基础而又重要的概念,random模块为我们提供了丰富的功能来处理随机性。 通过深入学习和应用random模块以及numpy、secrets和matplotlib等相关模块,我们可以更好地处理各种随机性相关的问题。 无论是简单的随机数生成,还是复杂的随机分布和安全随机数,Python都为我们提供了强大的工具和库,使我们能够在各种应用场景中灵活应对随机性需求。
|
2天前
|
资源调度 计算机视觉 Python
`scipy.ndimage`是SciPy库中的一个子模块,它提供了许多用于处理n维数组(通常是图像)的函数。
`scipy.ndimage`是SciPy库中的一个子模块,它提供了许多用于处理n维数组(通常是图像)的函数。
7 0
|
2天前
|
Python
`scipy.signal`模块是SciPy库中的一个子模块,它提供了信号处理、滤波、频谱分析等功能。这个模块包含了许多用于信号处理的函数和类,其中`butter()`和`filtfilt()`是两个常用的函数。
`scipy.signal`模块是SciPy库中的一个子模块,它提供了信号处理、滤波、频谱分析等功能。这个模块包含了许多用于信号处理的函数和类,其中`butter()`和`filtfilt()`是两个常用的函数。
10 0
|
2天前
|
数据可视化 Python
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
7 0
|
2天前
|
API Python
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
5 0
|
2天前
|
存储 SQL Python
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
6 0