【Python基础】Python模块(提高代码可维护性与重用性的关键)

news2024/9/21 17:12:53

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢!

文章目录

    • 一、前言
    • 二、什么是Python模块?
    • 三、创建模块
    • 四、导入模块
    • 五、使用if __name__ == "__main__"语句
    • 六、模块化编程的进阶技巧
        • 6.1 包(Packages)
        • 6.2 绝对导入与相对导入
        • 6.3 导入别名
        • 6.4 最佳实践
    • 七、总结

一、前言

​ 在Python编程中,模块是一个至关重要的概念。模块不仅能够提升代码的可维护性和可读性,还能增强代码的可重用性,从而显著提高开发效率。

​ 本文将深入探讨Python模块的概念、使用方法以及它们带来的好处。

  • 什么是Python?

    Python是由荷兰人吉多·范罗苏姆于1990年初设计的一门高级编程语言,该语言应用领域非常广泛,尤其在数据科学、人工智能、游戏开发等领域,它已经成为最受欢迎的程序设计语言之一,非常适合新手学习。

    Python语言标准库官方使用手册:https://docs.python.org/zh-cn/3/library/turtle.html#turtle-methods

  • Python语言有哪些特点?

    1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

    2.易于阅读:Python代码定义的更清晰。

    3.易于维护:Python的成功在于它的源代码是相当容易维护的。

    4.丰富的库:Python的最大的优势之一具有丰富的标准库,并且跨平台的,在UNIX,Windows和Mac兼容很好。

    5.面向对象:Python支持面向对象编程,在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

    6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

    7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

    8.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

    在这里插入图片描述

二、什么是Python模块?

Python模块是一个包含Python代码的文件,以.py为扩展名。

模块可以定义函数、类和变量,并且能够包含可执行的代码。

通过将相关功能组织在模块中,代码变得更加清晰、易于管理和重用。

Python标准库中包含了许多内置模块,如sys、os等,这些模块提供了丰富的功能,可以直接在Python程序中使用。

三、创建模块

创建Python模块非常简单。只需编写一个.py文件,并在其中定义所需的函数、类和变量。

例如,创建一个名为math_operations.py的模块,包含基本的数学运算功能:

# math_operations.py

# 两数相加
def add(x, y):
    return x + y


# 两数相减
def subtract(x, y):
    return x - y


# 两数相乘
def multiply(x, y):
    return x * y


# 两数相除
def divide(x, y):
    if y == 0:
        raise ValueError("除数不能为0")
    return x / y

四、导入模块

一旦创建了模块,就可以在其他Python脚本中导入并使用它。

Python提供了几种导入模块的方式:

  • 方式1:使用import语句导入整个模块:
# main.py

import math_operations

result_add = math_operations.add(5, 3)

print("5 + 3 = ", result_add)

# 输出:5 + 3 =  8
  • 方式2:使用from … import …语句导入模块中的特定函数或变量:
# main.py

from math_operations import subtract

result_subtract = subtract(5, 3)

print("5 - 3 = ", result_subtract)

# 输出:5 - 3 =  2
  • 方式3:使用import … as …语句为导入的模块设置别名:
# main.py

import math_operations as mo

result_multiply = mo.multiply(5, 3)

print("5 * 3 = ", result_multiply)

# 输出:5 * 3 =  15

五、使用if name == "main"语句

在模块中,经常会包含一些用于测试的代码。

为了避免在导入模块时执行这些测试代码,通常会使用if name == “main”:语句将测试代码包裹起来。

这样,只有直接运行模块时,测试代码才会执行。

# math_operations.py

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

def multiply(x, y):
    return x * y

def divide(x, y):
    if y == 0:
        raise ValueError("除数不能为0")
    return x / y

if __name__ == "__main__":
    print("测试add函数:", add(5, 3))
    print("测试subtract函数:", subtract(5, 3))
    print("测试multiply函数:", multiply(5, 3))
    print("测试divide函数:", divide(5, 3))

六、模块化编程的进阶技巧

6.1 包(Packages)

包是一种将模块组织在一起的方式。一个包是一个包含特殊文件__init__.py的目录,这个文件定义了包的属性和方法。通过包,可以更好地组织和管理模块,避免命名冲突。

6.2 绝对导入与相对导入

Python支持两种导入模块的方式:绝对导入和相对导入。绝对导入从顶层目录开始导入模块,而相对导入从当前目录或当前模块开始导入模块。

6.3 导入别名

使用as关键字为导入的模块或函数设置别名,可以提高代码的可读性。

6.4 最佳实践

将相关功能组织成模块和包,提高代码的组织性和可维护性。

使用有意义的模块和函数命名,增加代码的可读性。

编写清晰的文档和注释,方便其他开发者理解和使用你的代码。

七、总结

Python模块是提高代码可维护性和重用性的关键。

通过将代码分解成多个独立的模块,可以使得代码结构清晰,易于维护和扩展。

掌握模块的创建、导入以及进阶技巧,能够帮助你更加高效地管理和开发复杂的项目。

希望本文能够帮助你更好地理解和应用Python模块化编程的技术,从而提升编程能力和项目开发水平。

如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)

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

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

相关文章

(黑马点评) 五、探店达人系列功能实现

5.1 发布和查看探店笔记 5.1.1 发布探店笔记 这块代码黑马已经完成了,在发布探店笔记界面,有两块内容是需要上传的。一是笔记内容,二是笔记配图。其中笔记配图部分黑马使用的是上传到本地前端服务器上面的。我我觉得可以将图片文件发布在阿里…

开始你的博客之旅:从零到一的详细指南

创建博客不仅是表达自我的方式,更是与世界分享知识、塑造个人品牌、甚至实现商业变现的强大工具。本文将详细介绍从确定主题到实际运营的每个步骤,帮助你顺利开启个人博客的旅程。 确定博客的主题和目标 在开始博客之前,首先要明确博客的主…

windows环境下安装python第三方包

python环境下,通常通过Anaconda来管理多个python环境; 即通过Anaconda创建python不用的虚拟环境; 1. 安装更新python第三方包,打开Anaconda,在右侧的搜索需要的python包并进行安装; 2.如果没有搜索到&…

【线性规划求解系列】MATLAB中使用linprog解决线性规划问题

linprog - 求解线性规划问题 - MATLAB - MathWorks 中国https://ww2.mathworks.cn/help/optim/ug/linprog_zh_CN.html 本文详细介绍了如何在MATLAB中使用linprog函数来解决各种类型的线性规划问题。首先概述了linprog的基本语法,随后通过五个具体实例演示了如何处理…

《中国数据库前世今生》纪录片观感:从古至今数据库的演变与未来

我的数据库之路:从新手到稳步前行 三年数据库开发的经历,让我从一名菜鸟程序员逐步成长为能够独立解决问题的开发者。这段时间里,我经历过迷茫、困惑,也感受过技术攻关后的成就感。最近看了腾讯云推出的《中国数据库前世今生》纪…

基于机器学习的注意力缺陷/多动障碍 (ADHD)(python论文+代码)HYPERAKTIV

简述 医疗保健领域的机器学习研究往往缺乏完全可重复性和可比性所需的公共数据。由于患者相关数据附带的隐私问题和法律要求,数据集往往受到限制。因此,许多算法和模型发表在同一主题上,没有一个标准的基准。因此,本文提出了一个公…

盘点BDC/ZCU方案常用的芯片

文章目录 1.前言2.方案概述3.主控芯片3.1 RH850/U2A3.2 TC39x3.3 E34303.4 CCFC3007、CCFC3012 4.电源芯片4.1 混合方案4.2 分立方案 5.电机驱动芯片5.1 多路半桥驱动5.2 多路预驱5.3 步进电机驱动5.4 H桥驱动5.4.1 TI的H桥驱动5.4.2 ST的H桥驱动 6.高边驱动芯片/低边驱动芯片6…

自定义项目授权文件生成与认证

基于 TrueLicense 生成的授权文件证书存在很多局限性。所用这里通过自定义的方式来实现一个License授权文件的生成! 这里通过非对称加密RSA 的方式来创建 项目授权文件内容! 需要注意项目打包后最好将class文件进行防反编译的操作! 否则通过暴…

LVGL 控件之滑动条(lv_slider)

目录 一、概述二、滑块1、设置滑块当前值和范围值2、设置滑块部件的模式3、禁用单击4、事件5、API 函数 一、概述 滑动条对象看起来像是在 进度条 增加了一个可以调节的旋钮,使用时可以通过拖动旋钮来设置一个值。 就像进度条(bar)一样&…

828华为云征文|采用华为云Flexus云服务器X实例部署MQTT服务器完成设备上云

文章目录 一、前言1.1 开发需求1.2 Flexus云服务器介绍1.3 EMQX服务器 二、服务器选购2.1 登录官网2.2 选购服务器2.3 选择服务器区域2.4 选择服务器规格2.5 选择系统镜像2.6 选择存储盘2.7 配置密码2.8 配置云备份2.9 确认配置2.10 立即购买2.10 后台控制台 三、服务器登录3.1…

最佳软件测试基础入门教程4静态测试

静态测试 对工作产品(文档和代码)进行静态测试和分析,对提高产品质量有很大的帮助。本章介绍了静态测试的一般情况,以及所涉及的具体过程,包括其活动和必须填补的角色。我们描述了四种经过验证的技术和它们的具体优势…

【HarmonyOS 】编译报错:Install Failed: error: failed to install bundle

此问题是由于支付宝sdk兼容性造成的,目前只能删除支付宝sdk依赖,如下图所示操作,删除后需要点右上角的 Sync Now,并等待 Sync 结束 删除后还需要点右上角的 Sync Now,并等待 Sync 结束 uniapp解决方案: htt…

50个必须知道的VS代码扩展

我们即将浏览50个必须知道的VS Code扩展,这些扩展将大幅提高您的生产力,并帮助您像专业人士一样编码! 1. TabNine TabNine 是一个基于AI的自动完成工具,它可以根据您的代码上下文和模式建议完成,通过智能自动完成提高…

6000 字掌握 Java IO 知识体系

“子谦,Java IO 也太上头了吧?”新兵蛋子小二向头顶很凉快的老韩抱怨道,“你瞧,我就按照传输方式对 IO 进行了一个简单的分类,就能搞出来这么多的玩意!” 好久没搞过 IO 了,老王看到这幅思维导图…

【HarmonyOS NEXT】DevEco快速实现真机截屏,并保存到电脑

点日志点照机图标选一个路径保存图片在ide中右键图片,点复制电脑随便找个位置保存图片https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-screenshot-V5

SpringBoot(40) — SpringBoot整合MyBatis-plus

前言 在上节中我们对MyBatis-plus特性有了一个整体的认识,然后也大致讲了些MyBatis与MyBatis-plus的不同之处。大家感兴趣的话,可参考以下文章 SpringBoot(39) — MyBatis-plus简介 这节我们来讲讲SpringBoot项目如何快速接入MyBatis-plus框架。 今天涉及…

Redis技术解析(基础篇)

1.初识Redis Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 Redis-server NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至jso…

2024-09-13 冯诺依曼体系结构 OS管理 进程

一、冯诺依曼体系结构 1. 外部设备(外设): 分为输入设备和输出设备 输入设备:键盘、网卡、鼠标、网卡、磁盘(外存)、摄像头等 输出设备:显示器、磁盘、网卡、打印机等 2. 存储器 内存 3. 中…

Java面试篇基础部分-Java线程池工作原理

线程池的出现,主要是用来管理一组线程的工作运行状态,这样可以方便JVM更好的利用CPU资源。 Java线程池的工作原理:JVM先根据用户的参数创建一定数量的可运行的线程任务,并且将这些任务放入到队列中,在线程创建之后,启动这些任务。 如果当线程数超过最大线程数,这个线程数…

软件卸载工具(windows系统)-geek

有时候软件卸载会很麻烦,使用geek会比较方便。但是针对一些特别大的软件,geek也好像会稍微费点劲(比如MATLAB2022A),不过针对一般常规软件的卸载,geek就可以有效地完全卸载了,使用方法也很简单,…