Python——— 模块

news2024/11/25 4:39:25

(一)模块化(module)程序设计理念

模块和包概念的进化史

模块和包概念的进化史

① Python程序由模块组成。一个模块对应 python 源文件,一般后缀名是: .py
② 模块由语句组成。运行Python 程序时,按照模块中语句的顺序依次执行
③ 语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等

量变引起质变” 

           量变引起质变,从本质上理解,随着数量的增加,管理方式会发生本质的变化;旧的管理方式完全不适合,必须采用新的管理方式。

         程序越来越复杂 语句多了 ,怎么管理?很自然的,我们会将实现同一个功能的语句封装到
函数中,统一管理和调用,于是函数诞生了
        程序更加复杂, 函数和变量多了 ,怎么管理?同样的思路,“ 物以类聚 ,我们将同一类型对
象的 数据和行为 ,也就是 变量和函数 ,放到一起统一管理和调用,于是 类和对象 诞生了。
         程序继续复杂,函数和类更加多了,怎么办?好,我们将实现类似功能的函数和类统统放到
一个模块中,于是 模块 诞生了。
         程序还要复杂,模块多了,怎么办? 于是,我们将实现类似功能的模块放到一起,于是“包
就诞生了。

标准库模块(standard library)

        与函数类似,模块也分为标准库模块和用户自定义模块。Python标准库提供了操作系统功能、网络通信、文本处理、文件处理、数学运算等基本的功能。比如:random( 随机数 ) math( 数学运算) time( 时间处理 ) file( 文件处理 ) os( 和操作系统交互 ) 、sys(和解释器交互 ) 等。
        另外,Python 还提供了海量的第三方模块,使用方式和标准库类似。功能覆盖了我们能想象到的所有领域,比如:科学计算、WEB开发、大数据、人工智能、图形系统等。

为什么要模块化编程(好处)

        模块(module) 对应于 Python 源代码文件 (.py 文件 ) 。模块中可以定义变量、函数、类、普通语句。 这样,我们可以将一个Python 程序分解成多个模块,便于后期的重复应用。
        模块化编程(Modular Programming )将一个任务分解成多个模块。每个模块就像一个积木一样,便于后期的反复使用、反复搭建。

模块化编程有如下几个重要优势:
    便于将一个任务分解成多个模块,实现团队协同开发,完成大规模程序
    实现代码复用。一个模块实现后,可以被反复调用
    可维护性增强

模块化编程的流程

模块化编程的一般流程:
    设计 API ,进行功能描述。
    编码实现 API 中描述的功能。
    在模块中编写测试代码,并消除全局代码。
    使用私有函数实现不被外部客户端调用的模块函数。
模块的 API 和功能描述要点
        API(Application Programming Interface 应用程序编程接口 ) 是用于描述模块中提供的函数和类的功能描述和使用方式描述。模块化编程中,首先设计的就是模块的API (即要实现的功能描述) ,然后开始编码实现API 中描述的功能。最后,在其他模块中导入本模块进行调用。 可以通过help( 模块名 ) 查看模块的 API 。一般使用时先导入模块 ,然后通过help 函数查看。 也可以在 python api 文档中查询。首先进入 python 的安装目录下的docs 子目录:
模块的创建和测试代码
        每个模块都有一个名称,通过特殊变量 __name__ 可以获取模块的名称。在正常情况下,模块名字对应源文件名。 仅有一个例外,就是当一个模块被作为程序入口时(主程序、交互式提示符下),它的 __name__ 的值为 __main__ 。我们可以根据这个特点,将模块源代码文件
中的测试代码进行独立的处理。例如:

package

(package)的概念和结构

        当一个项目中有很多个模块时,需要再进行组织。我们将功能类似 的模块放到一起,形成了“包 。本质上, 就是一个必须有 __init__.py 的文件夹。典型结构如下:
        包下面可以包含“ 模块 (module)” ,也可以再包含 子包 (subpackage)”。就像文件夹下面可以有文件,也可以有子文件夹一 样
上图中, a 是上层的包,下面有一个子包: aa 。可以看到每个包里面都有 __init__.py 文件。

pycharm中创建包  

        在pycharm 开发环境中创建包,非常简单。在要创建包的地方单击右键: New -- >Python package 即可。 pycharm 会自动帮助我们生成带有 __init__.py 文件的包。

 

导入包操作和本质

上一节中的包结构,我们需要导入 module_AA.py 。方式如下:
1
import a.aa.module_AA
在使用时,必须加完整名称来引用,比如: a.aa.module_AA.fun_AA()
2
from a.aa import module_AA
在使用时,直接可以使用模块名 比如: module_AA.fun_AA()
3
from a.aa.module_AA import fun_AA 直接导入函数
在使用时,直接可以使用函数名。 比如: fun_AA()
注意:
from package import item 这种语法中, item 可以是包、模块,也可以是函数、类、变量。
import item1.item2 这种语法中, item 必须是包或模块,不能是其他。
        导入包的本质其实是“ 导入了包的 __init__.py 文件。也就是说, import pack1 意味着执行了包 pack1 下面的 __init__.py 文件。 这样,可以在 __init__.py 中批量导入我们需要的模块,而不再需要一个个导入。

 

__init__.py 的核心作用:

1
作为包的标识,不能删除。
2
导入包实质是执行 __init__.py 文件,可以在 __init__.py 文件中做这个包的初始化、以及需要统一执行代码、批量导入。

* 导入包

        import * 这样的语句理论上是希望文件系统找出包中所有的子模块,然后导入它们。这可能会花长时间等。Python 解决方案是提供一个明确的包索引。
        这个索引由 __init__.py 定义 __all__ 变量,该变量为一个列表,如上例 a 包下的 __init__.py 中,可定义 __all__ = ["module_A","module_A2"] 这意味着, from sound.effects import * 会从对应的包中导入以上两个子模块;

( Library)

        Python中库是借用其他编程语言的概念,没有特别具体的定义。 模块和包侧重于代码组织,有明确的定义。库强调的是功能性,而不是代码组织。 我们通常将某个功能的“模块的集合”,称为库。

标准库(Standard Library)

        Python拥有一个强大的标准库。 Python 语言的核心只包含数字、字
符串、列表、字典、文件等常见类型和函数,而由 Python 标准库提
供了系统管理、网络通信、文本处理、数据库接口、图形系统、
XML 处理等额外的功能。
Python 标准库的主要功能有:
           文本处理 ,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode 支持,二进制数据处理等功能
         文件处理 ,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能操作系统功能,包含线程与进程支持、IO 复用、日期与时间处理、调用系统函数、日志 (logging )等功能
          网络通信 ,包含网络套接字,SSL加密通信、异步网络通信等功能
         网络协议 ,支持HTTP, FTP SMTP POP IMAP NNTP XMLRPC 等多种网络协议,并提供了编写网络服务器的框架
         W3C格式支持 ,包含 HTML SGML XML 的处理。
         其它功能 ,包括国际化支持、数学运算、HASH Tkinter

 

目前学过的有: random math time file os sys 等模块。
   random 模块实现随机数处理
   math 模块实现数学相关的运算
   time 模块实现时间的处理
  file 模块实现对文件的操作
  OS 模块实现和操作系统的交互
   sys 模块实现和解释器的交互

第三方扩展库的介绍

        强大的标准库奠定了python 发展的基石,丰富和不断扩展的第三方库是python 壮大的保证。我们可以进入 PyPI官网( https://pypi.org)

  常用第三方库大汇总

 

 

 

 

PIP模块管理工具

        pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python包的查找、下载、安装、卸载的功能。
安装第三方扩展库的 2 种方式
        第三方库有数十万种之多,以pymysql 库为例讲解第三方扩展库的 安装。

第一种方式:命令行下远程安装

1
pip 更换数据源 ( 由于访问国外网站慢,建议更换 )
        家目录中,创建 pip 目录,然后增加文件: pip.ini 内容拷贝下面的即可( 不要加其他字符 )
[ global ]
index - url =
https : // mirrors . aliyun . com / pypi / simple /
[ install ]
trusted - host = mirrors . aliyun . com
Linux的家目录: ~ 增加目录和文件: ~/.pip/pip.conf
Windows 的家目录是: c:/user/用户名 增加目录和文件:
c:/user/用户名/pip/pip.ini
2
其他数据源:
阿里云 http://mirrors.aliyun.com/pypi/simple/
豆瓣: http://pypi.douban.com/simple/
中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple
清华: https://pypi.tuna.tsinghua.edu.cn/simpl
以安装第三方 pymysql 库为例,在命令行提示符下输入: pip install pymysql 即可。

第二种方式:Pycharm中直接安装到项目中

Pycharm 中,依次点击: file -- >setting -- >Project 本项目名 -- >Project Interpreter

 

 

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

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

相关文章

手把手教你编写LoadRunner脚本

编写 LoadRunner 脚本需要熟悉脚本语言、业务场景、参数化技术、断言和事务等基础知识。 在实际编写时,可以根据具体测试需求,结合实际情况进行合理的配置和调整。 基本步骤 创建脚本 在 LoadRunner 的 Controller 模块中,创建一个新的测试…

详解TCP三次握手(建立连接)和四次握手(释放连接)

TCP是是一个面向连接的协议,无论哪一方发送数据之前,都必须在双方之间建立一条连接。 一、建立连接 建立TCP连接时,要经历这样的流程: ① 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始…

基于微信小程序的个人健康数据管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

Unity可视化Shader工具ASE介绍——2、ASE的Shader创建和输入输出

大家好,我是阿赵,这里继续介绍Unity可视化写Shader的ASE插件的用法。上一篇介绍了ASE的安装和编辑器界面分布,这一篇主要是通过一个简单的例子介绍shader的创建和输入输出。 一、ASE的Shader创建 这里先选择Surface类型的Shader,…

Git 学习笔记 | 版本控制和版本控制工具

Git 学习笔记 | 版本控制和版本控制工具 Git 学习笔记 | 版本控制和版本控制工具什么是版本控制?版本管理工具的特性版本管理工具的发展简史主流的版本控制器本地版本控制集中版本控制分布式版本控制 Git与SVN的主要区别 Git 学习笔记 | 版本控制和版本控制工具 学…

孕期能吃韭黄吗?坐月子和哺乳期能吃韭黄吗?宝宝能不能吃韭黄?

韭黄又称韭芽、黄韭、韭菜白。韭菜隔绝光线,完全在黑暗中生长,因无阳光供给,不能进行光合作用,合成叶绿素,就会变成黄色,称之为「韭黄」。 孕期能吃吗? 能吃 韭黄味道独特,富含膳…

[Python入门教程]01 Python开发环境搭建

Python开发环境搭建 本文介绍python开发环境的安装,使用anaconda做环境管理,VS code写代码。搭建开发环境是学习的第一步,本文将详细介绍anaconda和vs code的安装过程,并测试安装结果。 视频教程链接:https://www.bil…

【ElasticSearch】深入了解 ElasticSearch:开源搜索引擎的力量

文章目录 前言一、初识 ElasticSearch 搜索引擎1.1 ElasticSearch 的核心概念1.2 ElasticSearch 的演进历程1.3 ElasticSearch 的优势与未来 二、正排索引与倒排索引:数据库与 ElasticSearch 的差异2.1 对正排索引的认识2.2 对倒排索引的认识2.3 正排索引 vs. 倒排索…

强迫症福音!一个小技巧,让DALLE-3创作排列美学

夕小瑶科技说 原创 编译 | 奶茶子 最近在Twitter上有一条备受欢迎的推文,其介绍了一个令人印象深刻的DALL-E应用。该推文中写道:“你可以使用DALL-E 3来制作一些令人惊叹的整齐排列风格的Knolling照片。”作者(chaseleantj)还分享了他所生成的Knolling…

【Golang】DFA算法过滤敏感词Golang实现

什么是DFA算法 DFA全称:Deterministic Finite Automaton,翻译过来就是确定性有限自动机,其特征是,有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态&…

java 常见api Arrays类

int类型数组 package daysreplace;import java.util.Arrays;public class Test {public static void main(String[] args) {int[] arrays{38,24,42,56,22,44};//直接输出数组名称就是内存地址System.out.println(arrays);//Arrays.toString()会将数组内容转成字符串形式System…

6款好用良心的国产软件,每一款都是精品,电脑秒变黑科技

在如今科技发展迅猛的时代,我们在工作中基本都会使用到电脑,其实电脑上有很多非常实用的软件,能够提高我们的工作效率。今天给大家分享6款良心好用的国产软件,每一款都是精品,让你电脑秒变黑科技。 01、滴答清单 滴答清…

mac文件为什么不能拖进U盘?

对于Mac用户来说,可能会遭遇一些烦恼,比如在试图将文件从Mac电脑拖入U盘时,却发现文件无法成功传输。这无疑给用户带来了很大的不便。那么,mac文件为什么不能拖进U盘,看完这篇你就知道了。 一、U盘的读写权限问题 如果…

17795-2019 建筑绝热用玻璃棉制品 思维导图

声明 本文是学习GB-T 17795-2019 建筑绝热用玻璃棉制品.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了建筑绝热用玻璃棉制品的分类和标记、技术要求、试验方法、检验规则以及标志、包 装、运输和贮存。 本标准适用于建筑围…

归并排序与非比较排序详解

W...Y的主页 😊 代码仓库分享 💕 🍔前言: 上篇博客我们讲解了非常重要的快速排序,相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…

Altium Designer培训 | 2 - 原理图库创建篇

目录 原理图界面屏幕放大&缩小&移动 元件库介绍及电阻容模型的创建 【SCH Library】面板 元件符号 绘制一只电阻的模型 设置栅格大小 绘制一只电容的模型 IC类元件模型的创建 排针类元件模型的创建 光耦及二极管元件模型 现有元件模型的调用 参考上一篇文章…

10.6数构(概念,优先队列复习,漏斗倒水时间期望,小木棍dfs,括号匹配,后缀表达式,PTA第三题)

选择应试 数据项是数据的最小单位 数据的逻辑结构与数据元素本身的内容和形式无关 带头结点的单循环链表中,任一结点的后继结点的指针域均不空 顺序存储结构的主要缺点是不利于插入或删除操作 顺序存储方式不仅能用于存储线性结构,还可以用来存放非…

【juc】countdownlatch实现并发网络请求

目录 一、截图示例二、代码示例2.1 测试代码2.2 接口代码 一、截图示例 二、代码示例 2.1 测试代码 package com.learning.countdownlatch;import lombok.extern.slf4j.Slf4j; import org.springframework.web.client.RestTemplate;import java.util.Arrays; import java.uti…

基于SSM的药房药品采购集中管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

【UE5 Cesium】15-Cesium for Unreal 加载本地地形

目录 一、加载全球无高度地形 二、加载区域DEM 效果 一、加载全球无高度地形 1. 先去如下网址下载全球无高度地形:Using a global terrain layer without height detail - #9 by RidhwanAziz - Cesium for Unreal - Cesium Community 下载后如下: 解…