Python零基础入门(十)——模块与包

系列文章目录

个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页
Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟
码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊


文章目录

  • 系列文章目录
  • 导语
  • 模块概述
  • 自定义模块
    • 创建模块
  • 引用模块
    • 使用 import 语句
    • 导入特定功能
    • 为模块或功能取别名
    • 模块搜索目录
  • 引用标准模块
  • 下载与安装第三方模块
    • 使用pip
  • 以主程序的形式执行
  • Python中的包
    • 创建包
    • 使用包
  • 结语

导语

欢迎来到本系列的第十篇文章!在前面的学习中,已经介绍了 Python 的基本语法、条件和循环语句、函数、以及面向对象编程等知识。今天,我们将继续扩展 Python 技能,学习有关模块与包的内容。模块与包是 Python 中非常重要的概念,它们能够帮助组织和管理代码,提高代码的复用性和可维护性。

模块概述

Python 提供了强大的模块支持,主要体现为不仅在 Python 标准库中包含了大量的模块(称为标准模块),如 mathrandomdatetime 等,而且还有很多第三方模块,另外开发者自己也可以开发自定义模块

模块的英文是 Modules,可以认为是一盒主题积木,通过它可以拼出某一主题的东西。这与函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函数,也就是很多积木,所以也可以说模块相当于一盒积木。

在 Python 中,一个扩展名为 “py” 的文件就称之为一个模块。通常情况下,把能够实现某一特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用。另外,使用模块也可以避免函数名和变量名冲突。

自定义模块

除了使用 Python 内置的模块外,也可以自己创建和使用自定义模块。自定义模块可以将一组相关的功能放在一个文件中,并在其他程序中进行引用。

创建模块

创建模块可以将模块中相关的代码(变量定义和函数定义等)编写在一个单独的文件中,并且将该文件命名为 “模块名+.py” 的形式,也就是说,创建模块,实际就是创建一个 .py 文件。

引用模块

Python 提供了多种方式来引用模块:

使用 import 语句

使用 import 语句可以导入整个模块,并使用模块中定义的功能。

import math

result = math.sqrt(25)
print(result)  # 输出 5.0

注意:使用 import 语句导入模块时,模块名是区分字母大小写的。

导入特定功能

如果只需要使用模块中的某个功能,可以使用 from ... import ... 语句。

from math import sqrt

result = sqrt(25)
print(result)  # 输出 5.0

为模块或功能取别名

在导入模块时,也可以为其取一个别名,方便使用。

import math as m
from math import sqrt as square_root

result = m.sqrt(25)
print(result)  # 输出 5.0

result2 = square_root(36)
print(result2)  # 输出 6.0

模块搜索目录

当使用 import 语句导入模块时,默认情况下,会按照以下顺序进行查找:

  • 1.内置模块:首先搜索内置的模块,例如 mathsys 等。
  • 2.当前工作目录:如果模块与当前脚本文件(或交互式会话)在同一目录下, 那么 Python 会优先从当前工作目录进行搜索。
  • 3.PYTHONPATH 路径:Python 会按照 PYTHONPATH 环境变量中声明的路径顺序逐个搜索。
  • 4.标准库路径:如果模块仍然未找到,则 Python 会搜索标准库的安装路径。
  • 5.错误:如果在以上步骤都找不到模块,则会抛出 ModuleNotFoundError 异常。

以上各个目录的具体位置保存在标准模块 syssys.path 变量中。可以通过以下代码输出具体的目录:

import sys				# 导入标准模块 sys
print(sys.path)			# 输出具体目录

执行上面的代码,将显示下图所示的结果。

在这里插入图片描述

引用标准模块

Python 内置了大约 200 多个标准模块,它们提供了丰富的功能和工具。下面是一个常用的 Python 标准模块及其功能:

模块名功能示例用途
math数学运算函数,如三角函数、指数对数、常量 π 等计算三角函数值、计算数学表达式
random生成随机数,如随机整数、随机选择、洗牌等随机数游戏、随机抽取样本数据
datetime处理日期和时间,如获取当前日期时间、格式化日期时间等日期时间处理、时间戳转换
os操作系统接口,如文件和目录操作、环境变量、进程管理等文件操作、目录遍历、环境变量读取
sys提供对解释器的访问,如命令行参数、标准输入输出等命令行参数解析、标准输入输出重定向
re正则表达式操作,用于字符串匹配和替换文本处理、数据提取
jsonJSON 数据编码和解码与其他系统交互、配置文件存储
csvCSV 文件读写数据处理、数据导入导出
urllibURL 处理和访问网络资源网络请求、网页爬虫
sqlite3SQLite 数据库操作数据存储、小型数据库应用
collections扩展的容器数据类型,如dequeCounterdefaultdict数据分析、数据处理
itertools提供用于高效循环的迭代器工具迭代操作、组合生成器
argparse命令行参数解析命令行工具、脚本参数配置
logging记录日志信息应用日志、调试信息输出
multiprocessing多进程编程,支持多进程和进程间通信并行处理、分布式计算

下载与安装第三方模块

除了 Python 内置的标准模块外,还有许多由 Python 社区贡献的第三方模块,可以为项目提供更多功能和特性。下面是常用的 Python 第三方模块及其功能:

模块名功能示例用途
requests发送 HTTP 请求,进行网络通信网络数据爬取、API调用
pandas数据处理和分析,提供 DataFrame 和 Series 数据结构数据清洗、数据分析、数据可视化
numpy科学计算和数值运算,提供多维数组和矩阵操作数值计算、线性代数运算
matplotlib绘制图表和可视化工具数据可视化、图表绘制
scipy科学计算工具集,提供数学、科学和工程计算数值计算、数据拟合、信号处理
beautifulsoup4解析 HTML 和 XML 文档,提取网页数据网页爬虫、网页数据提取
scrapy强大的网络爬虫框架大规模数据爬取、数据抓取
djangoWeb 应用开发框架构建Web应用、网站开发
flask轻量级 Web 应用开发框架快速构建Web应用、API服务
sqlalchemySQL 数据库的 ORM(对象关系映射)框架数据库操作、数据持久化
tensorflow深度学习框架机器学习、神经网络模型训练
pytorch深度学习框架,提供动态计算图机器学习、神经网络模型训练
keras高级神经网络 API,基于 TensorFlow 或 Theano快速构建和训练神经网络模型
nltk自然语言处理工具集文本处理、语言分析
opencv-python计算机视觉库,用于图像和视频处理图像处理、计算机视觉应用
selenium浏览器自动化测试工具网页自动化操作、Web 测试

要使用这些第三方模块,需要先下载并安装它们。

使用pip

pip 是Python的包管理器,可以用来下载和安装第三方模块。打开命令行终端,使用以下命令来安装一个名为 requests 的第三方模块:

pip install requests

这将从 Python 官方的 PyPI(Python Package Index)仓库中下载并安装 requests 模块。

由于 Python 官方的 PyPI 仓库位于国外,如果网络连接到 PyPI 缓慢,可以通过以下使用国内镜像源来快速下载:

国内有一些镜像源提供了 Python 第三方模块的镜像,可以加快下载速度。例如,清华大学提供了 PyPI 的镜像源。在终端中使用以下命令来更换为清华大学的 PyPI 镜像源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,就可以在代码中导入并使用这个模块了。

如果想要查看 Python 中都有哪些模块(包括标准模块和第三方模块),可以在 IDLE 中输入以下命令:

help('modules')

如果只是想要查看已经安装的第三方模块,可以在命令行窗口中输入以下命令:

pip list

以主程序的形式执行

在 Python 中,可以将一个文件既作为模块引用,又可以作为独立的程序执行。这可以通过 if __name__ == "__main__": 来实现。

# my_module.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

if __name__ == "__main__":
    result1 = add(5, 3)
    print(result1)  # 输出 8

    result2 = subtract(10, 4)
    print(result2)  # 输出 6

当直接运行 my_module.py 时,if __name__ == "__main__": 块中的代码将会执行;而当这个文件作为模块被引用时,if __name__ == "__main__": 块中的代码将不会执行。

这是因为当 Python 解释器执行一个文件时,它会将特殊的变量 __name__ 设置为一个特定的值。如果一个文件是作为独立程序执行,那么 __name__ 的值将被设置为 "__main__";如果一个文件是被导入为模块使用,那么 __name__ 的值将是模块的名称。

Python中的包

包是一种包含模块的文件夹,它允许将相关的模块组织在一起。包含一个特殊的文件 __init__.py(可以是空文件)来表示这个文件夹是一个包。使用包的好处是更好地组织和管理模块,避免模块名称冲突,并且使代码结构更清晰。

创建包的目的不是为了运行,而是被导入使用,包只是模块的一种形式而已。

创建包

创建包实际上就是创建一一个文件夹,并且在该文件夹中创建一个名称为 __init__.py 的 Python 文件。在 __init__.py 文件中,可以不编写任何代码,也可以编写一些 Python 代码。在 __init__.py 文件中所编写的代码,在导入包时会自动执行。

例如,创建一个名为 my_package 的包,它的目录结构如下:

my_package/
    __init__.py
    module1.py
    module2.py
    subpackage/
        __init__.py
        module3.py

使用包

创建包以后,就可以在包中创建相应的模块,然后再使用import语句从包中加载模块。从包中加
载模块通常有以下3种方式:

  • 通过 “import +完整包名.模块名” 形式加载指定模块;
  • 通过 “from + 完整包名+ import + 模块名” 形式加载指定模块
  • 通过 “from + 完整包名.模块名 + import + 定义名” 形式加载指定模块

结语

本篇博客,介绍了 Python 中模块与包的概念、自定义模块、导入模块、以及以主程序形式执行代码。模块与包是 Python 中组织代码、实现复用性和可维护性的重要工具,希望你能在今后的编程中善于运用它们。感谢阅读,祝你编程愉快!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAN通信的位定时与同步

位定时与同步 1.位时间 1.1相关基本概念 1)系统时钟:记为 t c l k t_{clk} tclk​; 2)CAN时钟周期:CAN时钟是由系统时钟分频而来的一个时间长度值,表示CAN控制器的工作时钟,实际上就是一个时…

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图: 需要先加载运行js代码,可能是对环境进行检测,反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscrip…

《Kubernetes故障篇:unable to retrieve OCI runtime error》

一、背景信息 1、环境信息如下: 操作系统K8S版本containerd版本Centos7.6v1.24.12v1.6.12 2、报错信息如下: Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: …

【Docker 学习笔记】Windows Docker Desktop 安装

文章目录 一、前言二、Windows Docker 安装1. 基于Hyper-V后端和Windows容器的安装2. 基于WSL2后端的安装(推荐)3. 安装Docker Desktop on Windows4. 启动并验证Docker Desktop 一、前言 Docker并非是一个通用的容器工具,它依赖于已存在并运…

《零基础入门学习Python》第070讲:GUI的终极选择:Tkinter7

上节课我们介绍了Text组件的Indexs 索引和 Marks 标记,它们主要是用于定位,Marks 可以看做是特殊的 Indexs,但是它们又不是完全相同的,比如在默认情况下,你在Marks指定的位置中插入数据,Marks 的位置会自动…

SAMBA 文件分享相关 笔记

目标说明 在Linux 安装Samba,然后在Windows端映射为网络硬盘 流程 Linux 端命令 apt install samba -y 默认情况下软件会询问是否迁移系统网络设置以搭建协议,选择迁移即可修改配置文件 vim /etc/samba/smb.conf Samba 的配置文件中会带一个名为 prin…

[VRTK4.0]将Unity输入系统与VRTKv4结合使用

学习目标: 展示了如何在Unity项目中设置Unity输入系统,以及如何导入输入系统Tilia包以支持VRTKTilia包与新的Unity输入系统操作一起工作。 流程: 步骤一: 首先我们需要再次检查项目设置是否具有新的Unity输入系统。通过Project S…

JAVA SE -- 第十三天

(全部来自“韩顺平教育”) 集合 一、集合框架体系 集合主要是两组(单列集合、双列集合) Collection接口有两个重要的子接口List 、Set,它们的实现子类都是单列集合 Map接口的实现子类是双列集合,存放的…

Java019-1——面向对象的三大特性

一、封装性 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。(这里说的信息就是类中的属性和方法) 1.1、封装性的体现 想要通过代码体现封装性之前,需要先…

使用vscode+platformio搭建arduino开发环境

存在的问题: Arduino编译时会将所有的C文件都编译一遍造成编译很慢,一个简单的工程稍加修改有可能都需要三四分钟才能编译完成,同时arduino也不支持代码跳转查看功能,不方便代码查看。 解决方法: 使用vscodeplatfor…

【c++】类和对象

类和对象 面向过程和面向对象的初步认识 我们用军事为例,要完成一次作战,需要侦察、后勤保障、战略部署、战术部署...等等 面向过程: 更加关注过程,关注如何侦察(无人机侦察、火力侦察、侦察小组侦察)&…

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义 vue.js 直接用在 script 标签中的完整版本(同时包含编译器 compiler 和运行时 runtime),可以看到源码,适用于开发环境。 这个版本视图可以写在…

微服务的各种边界在架构演进中的作用

演进式架构 在微服务设计和实施的过程中,很多人认为:“将单体拆分成多少个微服务,是微服务的设计重点。”可事实真的是这样吗?其实并非如此! Martin Fowler 在提出微服务时,他提到了微服务的一个重要特征—…

【Chat GPT】用 ChatGPT 运行 Python

前言 ChatGPT 是一个基于 GPT-2 模型的人工智能聊天机器人,它可以进行智能对话,同时还支持 Python 编程语言的运行,可以通过 API 接口进行调用。本文将介绍如何使用 ChatGPT 运行 Python 代码,并提供一个实际代码案例。 ChatGPT …

【雕爷学编程】MicroPython动手做(18)——掌控板之声光传感器2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

[php-cos]ThinkPHP项目集成腾讯云储存对象COS

Cos技术文档 1、安装phpSdk 通过composer的方式安装。 1.1 在composer.json中添加 qcloud/cos-sdk-v5: >2.0 "require": {"php": ">7.2.5","topthink/framework": "^6.1.0","topthink/think-orm": "…

Oracle 19c 报ORA-704 ORA-01555故障处理---惜分飞

异常断电导致数据库无法启动,尝试对数据文件进行recover操作,报ORA-00283 ORA-00742 ORA-00312错误,由于redo写丢失无法正常应用 D:\check_db>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 7月 30 07:49:19 2023 Version 19.3.0.0.0 Copyrig…

NoSQL-Redis集群

NoSQL-Redis集群 一、集群:1.单点Redis带来的问题:2.解决:3.集群的介绍:4.集群的优势:5.集群的实现方式: 二、集群的模式:1.类型:2.主从复制: 三、搭建主从复制&#xff…

阿里云服务器全方位介绍_性能功能优势和租用费用

阿里云服务器全方位介绍包括云服务器ECS优势、云服务器租用价格、云服务器使用场景及限制说明,阿里云服务器网分享云服务器ECS介绍、个人和企业免费试用、云服务器活动、云服务器ECS规格、优势、功能及应用场景详细说明: 目录 什么是云服务器ECS&#…

细讲TCP三次握手四次挥手(三)

TCP/IP 协议族 在互联网使用的各种协议中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的 TCP/IP 并不一定是单指 TCP 和 IP 这两个具体的协议,而往往是表示互联网所使用的整个 TCP/IP 协议族。 互联网协议套件(英语:Internet Pr…