[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
- 进入文件夹
- 准备编辑
- 我想要把原来的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+j、ctrl+k
- 可以切换当前活动(active)窗口
- 修改代码 如下图所示
- 注意这里是:wa|!python3 %
- :wa的意思是
- write all changed buffers
- 把所有修改了的缓存都存盘
- 然后再用python3来运行
- 运行输入部分的环节时
- 没有问题
- 运行输出部分的环节时
- 出错了
- 输入没有问题
- 但是参数a、b
- 好像没传过去?
- 从get_fruits.py到output.py的过程中
- 好像没有传递成功?
- 到底 a 是多少呢?
- 输出看看
- 给正确数据
- a 根本没有被声明!
- a 不认
- a 是 getfruit 这个模块(module)里的变量
- 给a加上namespace
- get_fruits.a 认么?
- 上码
- 再战
- 这次认了
- 现在需要的就是赋值了
- 录入数据
- 成功
- 我们真的自制了一个输入模块
- 为什么要把一个完成的程序
- 拆成两个模块呢?
- 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
- 最终
- 拆分代码 成功!
- 可以将程序 拆分成
- 输入
- 输出
- 然后再由主函数调用吗?
- 下次再说
[oeasy]python0141_自制模块_module_reusability_复用性的更多相关文章
- VC图形绘制双缓存的代码复用性讨论
在前文中已经讨论了如何实现界面绘制双缓存的问题,前文网址如下: http://www.2cto.com/kf/201111/112429.html 双缓存的主要思路是:先把图形绘制到内存DC中,然后再 ...
- 提高测试脚本复用性降低DOM结构引起路径变化的影响
问题描述 在定位元素时直接复制的xpath. 但是因为下面这些原因导致之前引用的路径失效, 不得不频繁修改脚本重新定位元素, 大降低了脚本的复用性, 也增加了维护的成本: 1. UI修改 (比如增加了 ...
- nodejs选择JavaScript作为开发语言,是因为一般的开发语言的标准库都是带有IO模块的,并且通常这个 模块是阻塞性的,所以nodejs选择了没有自带IO模块的Javascript
Javascrip本身不带IO功能,nodejs选择JavaScript作为开发语言,是因为一般的开发语言的标准库都是带有IO模块的,并且通常这个 模块是阻塞性的,所以nodejs选择了没有自带IO模 ...
- cadence allegro pcb模块设计复用
cadence allegro pcb模块设计复用 转载▼ 标签: 复用 模块 原理图 元件 文件 杂谈 分类: PCB技术 在你遇到如上图所示的dsp阵列PCB时,如果你的layout软件支持模块复 ...
- Vue 组件复用性和slot
1.组件可复用 2.slot元素作为组件模板之中的内容分发插槽,元素自身可以被替换 <!DOCTYPE html> <html lang="en"> < ...
- 【pytest官方文档】解读fixtures - 3. fixtures调用别的fixtures、以及fixture的复用性
pytest最大的优点之一就是它非常灵活. 它可以将复杂的测试需求简化为更简单和有组织的函数,然后这些函数可以根据自身的需求去依赖别的函数. fixtures可以调用别的fixtures正是灵活性的体 ...
- 架构设计之设计模式 (一) 适配器(Adapter)---提高复用性
简介 简介是为了描述一下该模式是干嘛用的,为了让不了解该模式的人看了之后也有一些新的认识. 本文章分为两部分,第一部分主要介绍适配器模式:第二部分介绍该模式与相近模式的异同. 下午一直在讨论设计模式, ...
- Lavarel - 模块间复用代码
代码复用在项目中早晚会遇到,这不在用 Laravel 给博客增加 Feed 订阅功能 就到了需要将生成网页 description 的函数提取出来,在文章显示与 Feed 生成的两个 Controll ...
- django第七天(模板的复用性,include标签和母版)
django第7天模板 include标签 模板的共用 a 模板需要到使用到 登陆界面 b 模板需要使用到 登陆界面 可以把登陆界面提取到公共的模板c 为什么要用: 都需要使用相同的界面,减少代码冗余 ...
- boost::any在降低模块之间耦合性的应用
作者:朱金灿 来源:http://blog.csdn.net/clever101 在开发大型系统中,遵循这样一个原则:模块之间低耦合,模块内高内聚.比如系统中模块有界面模块和算法模块两种,一般是界面模 ...
随机推荐
- docker之企业级镜像仓库Harbor
Harbor概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的 企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管 ...
- QShop商城--项目介绍
QShop商城-项目介绍 QShop商城,是全新推出的一款轻量级.高性能.前后端分离的电商系统,支持微信小程序,前后端源码100%开源,完美支持二次开发,让您快速搭建个性化独立商城. 技术架构:.Ne ...
- 到今天了你还不会集合的Stream操作吗?你要out了
Java8的两个重大改变,一个是Lambda表达式,另一个就是本节要讲的Stream API表达式.Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作 ...
- 基于FPGA的计算器设计---第一版
欢迎各位朋友关注"郝旭帅电子设计团队",本篇为各位朋友介绍基于FPGA的计算器设计---第一版. 功能说明: 1. 计算器的显示屏幕为数码管. 2. 4x4矩阵键盘作为计算器的输入 ...
- python的一些常用编码技巧(持续更新)
语法问题 我常用的库函数 1 copy库 import copy copy.deepcopy() 2.list库 from typing import List 获取迭代对象的第一个值 方法一:使用l ...
- .NET C#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行
.NET C#程序启动闪退,目录导致的问题 这是第2次踩这个坑了,很小的编程细节,容易忽略,所以写个博客,分享给大家. 1.第一次坑:是windows 系统把程序运行成服务,找不到配置文件,原因是以服 ...
- kettle从入门到精通 第六十课 ETL之kettle for循环处理每条数据,so easy!
1.kettle原生是支持for循环处理的,无需通过javascript脚本或者java脚本开发for循环控制.当然如果想通过脚本挑战下也是可以的. 本节课主要讲解如何通过kettle中的job来实现 ...
- kettle从入门到精通 第十八课 kettle Metadata Injection
1.Metadata Injection 类似于java里面的模版,设置通用的模版,通过输入不同的数据,得到不同的结果.本示例演示两个字段拼接成一个新字段. 2.设置模版,设置模版时,只需要根据自己的 ...
- ColorEasyDuino上手指南
介绍 ColorEasyDuino是嘉立创推出的一块Aduino开发板(类似物),具有丰富的外设接口:uart.i2c.spi.adc.pwm等:开发板设计参考原型是Arduino Uno,采用的芯片 ...
- mybatis insert foreach批量添加
mybatis insert foreach批量添加 int insertSelectiveBatch(List<ImageDetailEntity> myList); //写法1 < ...