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

news2024/12/24 9:18:38

自制包内容

回忆上次内容

  • 上次导入了外部的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

建立文件夹

图片描述

  • 进入文件夹

    • 准备编辑
  • 我想要把原来的apple.py拆成立两个py文件

    • input.py
      • 负责输入 两个数字
      • 分别是
        • 苹果的数量
        • 香蕉的数量
    • output.py
      • 负责计算水果总量
      • 并输出最终水果总数
  • 那python里面

    • 有没有现成的 input和output 模块呢?

尝试修改

  • 别重名了!

图片描述

  • 看起来没有默认的input和output模块
    • 不怕模块重名了
  • 不过input好像是很重要的函数的名字

图片描述

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

拆分文件

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

图片描述

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

图片描述

编辑

  • ctrl+jctrl+k
    • 可以切换当前活动(active)窗口
  • 修改代码 如下图所示

图片描述

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

运行结果

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

图片描述

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

调试程序

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

图片描述

  • 给正确数据

图片描述

  • a 根本没有被声明!

找到a

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

图片描述

  • 上码
  • 再战

图片描述

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

最终

图片描述

  • 录入数据

图片描述

  • 成功
    • 我们真的自制了一个输入模块
  • 为什么要把一个完成的程序
    • 拆成两个模块呢?

复用性Reusability

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

图片描述

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

复用的模块

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

图片描述

  • 我们可以感觉到 python 的可扩展性
    • 从各种 python 程序
    • 到底层的 python 各种辅助模块
    • python 代码复用就是这么容易
    • 这才是打一场人民战争的基础
  • 如今我们也写了自己的python模块
  • 这两个py文件
    • get_fruits.py
    • output.py
    • 之间是什么关系呢?

结构

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

图片描述

  • 运行output.py主模块的时候
    • 导入了 被引用的get_fruits.py
      • 先录入
    • 然后输出
  • 如何理解 导入 呢?
  • 英文
    • import 导入
    • export 导出
    • 词根port 本意为港口

总结

  • 这次把 apple.py 拆分了

    • 拆成了
      • 输入
      • 主函数
  • 使用 引用模块中变量的时候

    • 要使用上包名
      • get_fruits.a
      • get_fruits.b
  • 最终

    • 拆分代码 成功!
  • 可以将程序 拆分成

    • 输入
    • 输出
    • 然后再由主函数调用吗?🤔
  • 下次再说👋🏻

  • 蓝桥->https://www.lanqiao.cn/courses/3584

  • github->https://github.com/overmind1980/oeasy-python-tutorial

  • gitee->https://gitee.com/overmind1980/oeasypython

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472889.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试必问的Java 线程池原理及最佳实践

1. 概述 1.1 线程池是什么 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。 创建线程本身开销大,反复创建并销毁,过多的占用内存。所以有大量线程创建考虑使用…

【Python_Opencv图像处理框架】直方图与傅里叶变换

写在前面 本篇文章是opencv学习的第五篇文章,主要讲解了直方图与傅里叶变换的有关操作,作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正🥰 写在中间 一、直方图 ( 1 &…

软件企业利用ChatGPT的正确姿势

先来看一下现在市场环境 ChatGPT作为现象级产品横空出世之后,极大地带动了大语言模型产业和生成式AI(AIGC)产业的蓬勃发展。海外市场上,OpenAI、微软、谷歌、Meta等巨头动作频频。中国市场更是风起云涌,百度、阿里、华…

Android 源码解读-应用是如何启动的

作者:Android帅次 前言 作为多年的 Android 开发,写了不少应用,但是一个App到底是怎么启动起来的?你要说桌面点一下就启动了,那也对。但是它的启动过程呢?带着这样的疑问,咱们来一步步学习。 …

C语言 | 约瑟夫问题(猴王争夺战)

约瑟夫问题(单向循环链表的使用) 约瑟夫问题有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。下面我们将用猴子争大王这一故事以及采用单向循环链表这一方法来进行讲…

Lazysysadmin靶机渗透过程

准备工作 下载好靶机到本地后 VMware导入OVA 启动靶机 扫描信息 首先扫描整个C段发现主机 进一步扫描端口 从扫描结果可知: Samba服务MySQLSSH端口网站端口 先对网站进行目录遍历 发现有wordpress网站和phpmyadmin管理系统 出现了非常多遍My name is togie.可能…

Leetcode171. Excel 表列序号

Every day a leetcode 题目来源:171. Excel 表列序号 解法1:数学 168. Excel表列名称的逆向题目。 本题实质上是特殊的 26 进制。 A ~ Z对应1 ~ 26。 假设 A 0,B 1,…,那么 AB 261 * 0 260 * 1。 而这里是A…

二叉搜索树中的搜索

1题目 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root [4,2,7,1,3], val 2 输出&#xff1…

[计算机图形学]材质与外观(前瞻预习/复习回顾)

一、图形学中的材质 不同的物体表面有着不同的材质,而不同的材质意味着它们与光线的作用不同。那么我们之前在介绍辐射度量学和渲染方程提到过其中一个函数,叫做BRDF,而在实际上,也就是BRDF定义了不同的材质。BRDF决定了光如何被反…

JavaScript经典教程(七)-- JavaScript基础 -- 函数、argument、匿名函数、函数深入、选项卡

188:JavaScript基础 - 函数、argument、匿名函数、函数深入、选项卡 1、函数 (1)特性 1、每个函数都有自己的作用域。 2、如果执行该变量名,会返回自己,即返回函数本身。 3、正常调用,返回函数中的执…

软件STM32cubeIDE下STM32F1xx使用定时器(TIM8)+DMA+PWM点亮灯带WS2812-基础样例

软件STM32cubeIDE下STM32F1xx使用定时器(TIM8)DMAPWM点亮灯带WS2812-基础样例 (1)前言(2)环境说明(3)先行了解本次调到坑里的两个点问题点(1)TIM3_ch2,在STM3…

真题详解(极限编程)-软件设计(六十一)

真题详解(二分查找平均值)-软件设计(六十)https://blog.csdn.net/ke1ying/article/details/130417464 VLANtag属于 数据链路层实现。 数据链路层:网桥交换机。 网络层:路由器。 物理层:中继器。 Telent…

1694_week1_MIT使用Python编程学习手记1

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 首先说明一下,这部分信息的整理只是我个人的理解。由于自己的知识功底以及英语水准,很可能会有大量的疏漏。再此,我只想把自己学习时候的一…

Linux进程通信:信号 信号集 信号集函数

1. 信号的概念 Linux进程间通信的方式之一。信号也称为“软件中断”。 信号特点: 简单;携带信息有限;满足特定条件才发送信号;可进行用户空间和内核空间进程的交互; 信号4要素: (1&#xf…

抓马,互联网惊现AI鬼城:上万个AI发帖聊天,互相嗨聊,人类被禁言

近日又有一个社区迷惑走红 上万个AI发帖聊天,人类不得入内? 据红星新闻报道 近日,一个名为Chirper的AI网络社区突然爆火 上万个AI聊天机器人在其中 激烈地聊天、互动、分享 社区主页右上角明确写着: “这是一个人工智能的社交…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版) Chapter 1 Data Mining

来源:《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 1 Data Mining Now, statisticians view data mining as the construction of a statistical model, that is, an underlying distribution from which the visible data is drawn. However, ma…

docker上部署程序后无法连接数据库的问题

咱就是说,这个问题差点给我劝退docker。下面说下环境情况。 装了个javaweb程序容器,装了个数据库容器,javaweb容器就是链接不上数据库。 咱也是跟着菜鸟教程的容器互联步骤简历网络链接: 并且启动时增加--networkxxx 都加入到了…

socket通信之select

多线程版本的的socket的server端 #include "socket.hpp" #include <iostream> #include <string> #include <memory>DWORD WINAPI threadProc(LPVOID lp) {SOCKET sClient *(SOCKET*)(lp);while (true) {char buff[1024] { 0 };int result rec…

数据结构初阶 —— 树(堆)

目录 一&#xff0c;堆 堆的概念 向下调整法&#xff08;数组&#xff09; 向上调整法&#xff08;数组&#xff09; 堆的创建&#xff08;建堆&#xff09; 堆的实现 一&#xff0c;堆 堆的概念 如有个关键码的集合K{&#xff0c;&#xff0c;&#xff0c;...&#xf…

Anaconda你不得不知道的若干知识点

Anaconda你不得不知道的若干知识点 1. 查看所有的环境变量2. 加载tensorflow在jupyter中会挂掉怎么办&#xff1f;3. Excel xlsx file&#xff1b; not supported两种解决办法4. (unicode error)5. 统计pandas二维表中的某列的重复值法一&#xff1a;df.loc[:,col_name].value_…