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

news/2024/2/21 10:39:26

自制包内容

回忆上次内容

  • 上次导入了外部的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.ppmy.cn/news/57037.html

相关文章

Java 中的异常处理机制是什么?如何使用它来处理程序中的异常?(七)

Java 中的异常处理机制是一种重要的编程技术,它能够帮助程序员更好地管理程序中出现的异常情况。本文将详细介绍 Java 中的异常处理机制,并提供示例来说明如何使用异常处理机制来捕获和处理程序中的异常。 什么是异常? 在程序运行过程中&am…

简单的无理函数的不定积分习题

前置知识:简单的无理函数的不定积分 习题 题1: 计算 ∫ x 1 x 1 − x d x \int x\sqrt{\dfrac{1x}{1-x}}dx ∫x1−x1x​ ​dx 解: \qquad 令 t 1 x 1 − x t\sqrt{\dfrac{1x}{1-x}} t1−x1x​ ​,则 x t 2 − 1 t 2 1 x\…

Mysql Sharding-JDBC读写分离

0 课程视频 深入Sharding-JDBC分库分表从入门到精通【黑马程序员】_哔哩哔哩_bilibili 1 基本概念 1.1应用逻辑 1.1.1 msyql 多库 多表 多服务器 1.1.2 通过Sharding-JDBC jar包->增强JDBC 访问多数据源 -> 自动处理成一个数据源 1.1.3 使用数据的人 -> 使用Sh…

【力扣】根据二叉树的前序和中序遍历结果还原该二叉树(以及后序和中序还原)

一 前序和中序还原二叉树 连接:根据二叉树的前序和中序遍历结果还原该二叉树 思路是这样的: 这个算法的目的是根据前序遍历和中序遍历的结果,重建一棵二叉树。前序遍历的特点是,第一个元素一定是根节点,后面的元素…

想搞懂 API ,先了解这些技术

在学习 API 相关技术之前,我们需要理解什么是 API。API(Application Programming Interface,应用程序编程接口)是为了帮助不同的应用程序之间实现数据和功能交换而设计的一组软件接口。使用 API,开发者可以访问底层数据…

利用Google Colab免费使用GPU服务器详细攻略

目录 前言 一、Colab限额、提供的GPU类型 二、Colab的使用步骤(如何使用免费GPU资源) 1、添加Colaboratory 2、新建Colab、连接GPU、挂载Google Driver 3、项目上传文件并运行 三、快速下载/上传Google Drive文件的方法(利用MultiClou…

AI模型推理(3)——ModelMesh使用

参考: ModelMesh installation - KServe Documentation Website ModelMesh Overview - KServe Documentation Website 前言 Kserve提供了“Serverless”和“ModelMesh”两种安装模式。其中Serverless是通过Knative组件实现动态扩缩容等功能。而ModelMesh则是另一…

机器学习——K-Means算法优化(一)代价函数

机器学习——K-Means算法优化(一)代价函数 文章目录 机器学习——K-Means算法优化(一)代价函数一、K-Means算法(代价函数)二、代码部分 在K-Means算法中,对K个质心的选择,容易陷入局…

《LearnUE——基础指南:开篇—3》——基础概念

目录 程序之祖——HellowWorld 0.3.1 创建HellowWorld工程 0.3.2编译类型 0.3.3 平台支持 0.3.4 命名约定 程序之祖——HellowWorld 0.3.1 创建HellowWorld工程 接上文准备工作完成之后,双击运行Unreal Engine快捷图标,或者双击生成的UE4Editor.exe…

轻松掌握mysql事务的四大特性ACID及实现原理

1、介绍 要实现这四大特性,我们先了解下mysql中的缓冲池和数据页 2、保证原子性和一致性 1、通过undo log保证数据的原子性和一致性 undo log保证了事务的原子性和一致性。 3、保证隔离性 1、并发事务产生时容易产生的隔离性问题 脏读 不可重复读 幻读…

google.common的guava依赖的partition分割产生的浅拷贝问题解决方案

google.common的guava依赖的partition分割产生的浅拷贝问题解决方案 问题背景解决方案Lyric&#xff1a; 说你不爱我 问题背景 使用google.common的guava依赖的partition分割产生的浅拷贝问题&#xff0c;如: 把userList集合分割成每个10000的小集合 List<List> partiti…

方舟开服教程——开服服务器配置选择及租用建议指导

目前方舟开服有以下服务器模式可以选择&#xff1a; 1、自己家里的设备或物理机放家里开 2、自己购服务器设备托管到机房 3、租独立物理机 4、租虚拟机 5、租云服务器 6、淘宝面板服 配置如何选择 一般每一个地图4G可以运行&#xff08;使用内存清理压缩内存但会性能损失容易卡…

四、成本管理

1、 [单选] 完成进度计划中考虑的所有活动的估算成本为14&#xff0c;500美元。该项目的发起人需要至少90%的成本基准确定性水平&#xff0c;按照蒙特卡洛模拟的结果&#xff0c;计算的预计成本为&#xff1a;概率 估算成本 40% 10,000 美元 50% 12,000 美元 60% 13,000 美元 7…

FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(四)

接着同样地我们也需要完成对千兆网口ETH模块和USB2.0模块的编写&#xff0c;实际上和UART串口模块的设计思想大同小异&#xff0c;也同样地需要完成两项关键功能即识别并解析报文、接收并发送数据&#xff0c;千兆网口ETH和USB2.0的底层驱动在前面的例程中也详细说明了&#xf…

Vulnhub:DerpNStink 1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.130 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 通过nmap的http-enum脚本发现目标80端口存在wordpress&#xff0c;访问目标网站的wordpress被重定向到http://derpnstink.…

数据结构与算法之数组: Leetcode 914. 卡牌分组 (Typescript版)

卡牌分组 https://leetcode.cn/problems/x-of-a-kind-in-a-deck-of-cards/ 描述 给定一副牌&#xff0c;每张牌上都写着一个整数。 此时&#xff0c;你需要选定一个数字 X&#xff0c;使我们可以将整副牌按下述规则分成 1 组或更多组&#xff1a; 每组都有 X 张牌。组内所有…

玩手机打电话识别监测算法 yolov8

玩手机打电话识别监测系统通过YOLOv8网络模型技术&#xff0c;玩手机打电话识别监测算法对现场有人玩手机抽烟打电话时可以立即自动进行抓拍存档。YOLOv8 算法的核心特性和改动可以归结为如下&#xff1a;提供了一个全新的 SOTA 模型&#xff0c;包括 P5 640 和 P6 1280 分辨率…

操作系统——死锁

0.关注博主有更多知识 操作系统入门知识合集 目录 5.1死锁概念 5.2死锁的起因 5.3预防死锁的策略 思考题&#xff1a; 5.1死锁概念 在介绍死锁之前&#xff0c;先来探究一个问题&#xff1a;哲学家就餐问题。五个哲学家围坐在圆桌边&#xff0c;有5支筷子&#xff0c;哲…

3年经验程序员聊聊外包项目,总结了6个典型的问题该如何解决

我是一名老程序员&#xff0c;接了项目&#xff0c;接外包项目已经有3年多的经验了。今天我想分享一些接项目的经验给大家。 第一&#xff0c;辞职去接外包&#xff0c;好吗&#xff1f;有很多人幻想辞职了全职去接外包&#xff0c;但我并不太建议这样做。我建议大家先把自己的…

工控老司机告诉你热电偶和RTD的区别

热电偶和热电阻都是温度传感器&#xff0c;但它们的原理、功能特性和应用场景有所不同。 一、原理区别 首先&#xff0c;热电偶是利用两种不同金属之间的热电效应来测量温度的。其原理是利用温度差引起的金属之间的热电势差进行测量。两种金属之间存在一种热电势&#xff08;…
最新文章