什么是模块,Python模块化编程(入门必读)

news2025/8/6 13:16:07

Python 提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。

那么,模块到底指的是什么呢?模块,英文为 Modules,至于模块到底是什么,可以用一句话总结:模块就是 Python 程序。换句话说,任何 Python 程序都可以作为模块。

模块可以比作一盒积木,通过它可以拼出多种主题的玩具,这与前面介绍的函数不同,一个函数仅相当于一块积木,而一个模块(.py 文件)中可以包含多个函数,也就是很多积木。模块和函数的关系如图所示。

经过前面的学习,读者已经能够将 Python 代码写到一个文件中,但随着程序功能的复杂,程序体积会不断变大,为了便于维护,通常会将其分为多个文件(模块),这样不仅可以提高代码的可维护性,还可以提高代码的可重用性。

代码的可重用性体现在,当编写好一个模块后,只要编程过程中需要用到该模块中的某个功能(由变量、函数、类实现),无需做重复性的编写工作,直接在程序中导入该模块即可使用该功能。

前面讲了封装,并且还介绍了很多具有封装特性的结构,比如说:

  • 诸多容器,例如列表、元组、字符串、字典等,它们都是对数据的封装;
  • 函数是对 Python 代码的封装;
  • 类是对方法和属性的封装,也可以说是对函数和数据的封装。

这里所介绍的模块,可以理解为是对代码更高级的封装,即把能够实现某一特定功能的代码编写在同一个 .py 文件中,并将其作为一个独立的模块,这样既可以方便其它程序或脚本导入并使用,同时还能有效避免函数名和变量名发生冲突。

举个简单的例子,在某一目录下(桌面也可以)创建一个名为 hello.py 文件,其包含的代码如下:

def say ():
    print("Hello,World!")

在同一目录下,再创建一个 say.py 文件,其包含的代码如下:

#通过 import 关键字,将 hello.py 模块引入此文件
import hello
hello.say()

运行 say.py 文件,其输出结果为:

Hello,World!

大家可能注意到,say.py 文件中使用了原本在 hello.py 文件中才有的 say() 函数,相对于 day.py 来说,hello.py 就是一个自定义的模块,我们只需要将 hellp.py 模块导入到 say.py 文件中,就可以直接在 say.py 文件中使用模块中的资源。

与此同时,当调用模块中的 say() 函数时,使用的语法格式为“模块名.函数”,这是因为,相对于 say.py 文件,hello.py 文件中的代码自成一个命名空间,因此在调用其他模块中的函数时,需要明确指明函数的出处,否则 Python 解释器将会报错。

Python教程,8天python从入门到精通,学python看这套就够了

 

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

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

相关文章

深入理解Mysql索引底层数据结构与算法

索引是帮助MySQL高效获取数据的排好序的数据结构 深入理解Mysql索引底层数据结构与算法1.常见的数据结构讲解1.1 二叉树1.1.1 二叉树的定义1.1.2 二叉树示例1.1.3 Mysql为什么不使用二叉树进行数据存储1.2 红黑树1.2.1 红黑树的定义1.2.2 红黑树示例1.2.3 Mysql 为什么不适用红…

k8s学习之路 | k8s 工作负载 ReplicaSet

文章目录1. ReplicaSet 基础概念1.1 RS 是什么?1.2 RS 工作原理1.3 什么时候使用 RS1.4 RS 示例1.5 非模板 Pod 的获得1.6 编写 RS1.7 使用 RS1.8 RS 替代方案2. ReplicaSet 与 ReplicationController2.1 关于 RS、RC2.2 两者的选择器区别2.3 总结1. ReplicaSet 基础…

【三维几何学习】使用VTK对网格输入特征进行可视化

使用VTK对网格输入特征进行可视化引言一、全部代码二、可视化引言 使用python调用VTK库对网格的输入特征进行可视化,方便后续实验与分析 上图可视化的输入特征是热核特征HKS的第一个通道,也可对其他输入进行可视化数据集可参考1:三角网格(Triangular Me…

网上鲜花交易平台,可运行

文章目录项目介绍一、项目功能介绍1、用户模块主要功能包括:2、商家模块主要功能包括:3、管理员模块主要功能包括:二、部分页面展示1、用户模块部分功能页面展示2、商家模块部分功能页面展示3、管理员模块部分功能页面展示三、部分源码四、底…

LCMXO3L-640E-5MG121I【FPGA】LCMXO3L-640E-6MG121I采用65nm非易失性低功耗工艺设计

LCMXO3L-640E-5MG121I【FPGA】LCMXO3L-640E-6MG121I采用65nm非易失性低功耗工艺设计MachXO3设备系列是一个超低密度系列,支持最先进的可编程桥接和IO扩展。它具有突破性的IO密度和最低的每IO成本。设备IO功能集成了对最新行业标准IO的支持。121CSFBGA(明…

plg(Loki+Promtail+Grafana)监控nginx日志、messages日志监控平台

登录官网:loki官网Like Prometheus, but for logs. Contribute to grafana/loki development by creating an account on GitHub.https://github.com/grafana/loki/releases/ loki安装 ----root用户操作 ###创建用户 useradd loki passwd loki###创建安装目录 mkd…

蒙牛联合泛微采知连,实现研发知识管理数智化

蒙牛1999年成立于内蒙古自治区,总部位于呼和浩特,是全球乳业七强。蒙牛常温事业部坚持产品的创新研发和数智化转型,每年持续、稳定的新品推出,让业务快速增长、规模持续扩大。 (图片素材来自蒙牛官网) 构建…

基于单片机的波形发生器设计

单片机可以用来设计各种类型的波形发生器,下面是一种基于单片机的波形发生器设计方案。所需材料:单片机:可以选择常见的Atmel AVR单片机,如ATmega328P等。调制器:可以使用AD9833或AD9851等常用的调制器。时钟&#xff…

部署安装Nginx服务实例

其他服务: 搭建zabbix4.0监控服务实例 普罗米修斯监控mysql数据库实战 Linux安装MySQL数据库步骤 一. Nginx概念介绍 1.介绍Nginx程序 Nginx (engine x) 是一款开源且高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。主要特点是占用…

ElasticSearch - 分布式文档索引、搜索、更新和删除文档的过程

文章目录1. 分布式文档存储1. 路由一个文档到一个分片中2. 主分片和副本分片如何交互3. 新建、索引和删除文档4. 取回一个文档5. 局部更新文档2. ElasticSearch相关问题1. 路由计算方式?2. 分片控制3. 分布式文档写入(索引)的过程?4. 分布式文档搜索的过…

自动化实战以及自动化性能测试

web自动化测试实战编写web自动化测试用例;创建自动化项目,根据用例来实现脚本无头模式使用selenium4自动化测试工具和junit5单元测试框架结合,如何实现的,以及有什么两点使用了junit5中提供的注解;避免生成过多的对象&…

轻量简单的团队协作工具有哪些?远程办公必备软件排行榜

前段时间的疫情不断反复,让不少企业和团队都开启了居家办公,无论是线上协作还是团队会议,都要使用大量的办公远程软件,因为突如其来的场景大转变,所以无形中也给大家增加了不少烦恼。 经历过了就有经验了,…

Docker安装Jenkins练习纪录一

Docker安装Jenkins练习记录参考博客准备资源centos7下载vmware下载jdk8下载Maven 下载FinalShell下载开始练习一些小问题参考博客 https://blog.csdn.net/lzc2644481789/article/details/124888223 https://blog.csdn.net/qq_52423918/article/details/125169577 准备资源 cen…

2023年天津体育学院专升本专业课考试考生考前防疫及入场须知

天津体育学院2023年高职升本科专业考试考生考前须知 一、防疫要求 1.考生要强化自我健康“第一责任人”的意识和责任,自觉履行考前每日健康监测义务。须于考前7天(3月8日前)下载《天津体育学院2023年高职升本科专业考试考生健康安全承诺书》&…

【微信小程序开发全流程】篇章0:基于JavaScript开发的校园综合类微信小程序的概览

基于JavaScript开发的校园综合类微信小程序的概览 本文仅供学习,未经同意请勿转载 一些说明:上述项目来源于笔者我本科大三阶段2019年电子设计课程项目,在这个项目中,我主要是负责的部分有前端,前后端的对接&#xf…

深入理解机器学习——偏差(Bias)与方差(Variance)

分类目录:《深入理解机器学习》总目录 偏差(Bias)与方差(Variance)是解释学习算法泛化性能的一种重要工具。偏差方差分解试图对学习算法的期望泛化错误率进行拆解,我们知道,算法在不同训练集上学…

兴达易控Modbus转Profinet网关连接1200Profinet转modbus接三菱A800变频器案例

下面介绍A800 变频器通过兴达易控modbus转profinet网关,使1200plc无需编程实现Profinet转modbus协议转换,把modbus变频器轻松组网 网络拓扑如下图 打开博图组态加载GSD文件,modbus转profinet网关从站接口接入到1200PLC上 配置modbus转profine…

【MyBatis】篇二.MyBatis查询与特殊SQL

文章目录1、MyBatis获取参数值case1-单个字面量类型的参数case2-多个字面量类型的参数case3-map集合类型的参数case4-实体类类型的参数case5-使用Param注解命名参数总结2、MyBatis的各种查询功能case1-查询结果是一个实体类对象case2-查询结果是一个List集合case3-查询单个数据…

杂记——16.idea中导入maven项目

这篇文章我们来讲一下如何从Gitee上拉取项目,并将该项目导入到idea中 目录 1.拉取项目 2.idea导入项目 3.更改相关的配置 3.1更改maven仓库 3.2更改数据库的连接池 1.拉取项目 第一步:找到相关的项目地址 如图所示,在Gitee上找到相关的…

FPGA时序约束(二)利用Quartus18对Altera进行时序约束

系列文章目录 FPGA时序约束(一)基本概念入门及简单语法 文章目录系列文章目录前言Quartus时序约束不进行时序约束的后果时序约束方法TimeQuest Timing Analyzer 工具来对工程添加约束。创建网表读取SDC文件创建时钟(Create Clock&#xff09…