Python的模块与包

前言        

        当你编写Python程序时,你经常会引入别人编写好的模块。有的模块是Python自带的,你无需安装就能直接引用,而有的模块则是由Python生态系统里的第三方工程师提供的,你需要通过pip安装之后,才能进行使用。由于在编写Python程序的时候会经常引用别人编写好的模块,因此你应该花一些时间来了解与之有关的知识点。为了让你对Python中的模块有一个清晰的认识,这篇文章将从以下几步来展开:

  1. 如何引入模块
  2. 理解模块(Module)
  3. 包(Package)

【一】如何引入模块

        首先,我们来看一看,如何引入Python内置的模块。新建文件start.py,内容如下所示:

import os

        以上指令引入了Python内置模块os,引入它之后,我们便可以使用这个模块内部的函数,比如你可以调用它提供的函数cpu_count来获取CPU的核数:

import osprint(os.cpu_count())

        在命令行中执行以下命令,得到的结果如下所示:

% python3 start.py
4

        接下来,我们看看如何引入第三方提供的模块,这里,我们使用requests作为例子,关于它的使用说明,你可以到它的官网查阅。由于你使用的不是Python内置的模块,因此,你首先需要执行以下命令来安装requests

pip install requests

安装之后,在start.py中添加以下指令,:

import requests

        该指令的作用是导入requests模块,接下来,你便可以使用该模块所提供的功能。比如,我们可以使用其中的get函数来获取digolds.cn的网页内容,具体的指令如下所示:

r = requests.get('https://digolds.cn')
print(r.text)

        除此之外,你还可以通过from module import submodule来引入模块中的某个函数,比如下面的代码和上面的代码是等价的:

from requests import get
r = get('https://digolds.cn')
print(r.text)

或者,你也可以通过import module.submodule.submodule来引入模块中的某个函数,如下所示:

import requests.get
r = requests.get('https://digolds.cn')
print(r.text)

这里的submodule有可能是另外一个模块,也可能是当前模块中的某一个常量、函数或者类等。

创建包和模块是在 Python 中组织和管理代码的重要方式。下面我将介绍如何创建包和模块:

【二】模块(modules)


【1】概念:

        将实现某一特定功能的代码放置在一个文件中,以便于其他程序进行导入使用,可以避免函数名、变量名的冲突,该文件称为模块,拓展名为.py

【2】作用:

模块 = 函数 + 类 + 变量
程序规模不断变大需要分为多个文件,以提高维护性
模块可以重复导入,提高重用性

【3】分类:

Python 中的模块可以分为三类:

  1. 内置模块(Built-in Modules): 这些模块是 Python 标准库中自带的模块,可以直接使用,无需安装额外的包。标准库包含了各种功能模块,如数学计算、文件操作、日期时间处理、网络通信等。例如,math 模块提供了数学运算函数,datetime 模块用于处理日期和时间。

  2. 第三方模块(Third-party Modules): 这些模块是由其他开发者或组织开发并共享的,可以通过 pip 或其他包管理工具安装。第三方模块提供了许多额外的功能和工具,可以帮助你解决各种问题。常用的第三方模块包括 numpy(数值计算)、requests(HTTP 请求)、beautifulsoup4(HTML 解析)等。

  3. 自定义模块(Custom Modules): 这些模块是由你自己创建的,用于组织和重用自己的代码。你可以将相关的函数、类和变量封装在一个文件中,并按需导入和使用。自定义模块可以按照你的项目需求来设计,提高代码的可读性和可维护性。

无论是内置模块、第三方模块还是自定义模块,它们都可以通过 import 语句导入到 Python 程序中,并使用其中定义的函数和类。

( 1 )导入内置模块

import mathresult = math.sqrt(16)
print(result)  # 输出:4.0

( 2 ) 第三方模块

import numpy as nparray = np.array([1, 2, 3])
print(array)  # 输出:[1 2 3]

( 3 ) 自定义模块

import my_modulemy_module.my_function()

 

( 4 )模块常见的导入方法:五种

        import 模块名
        from 模块名 import 功能名
        from 模块名 import *
        import 模块名 as 别名
        from 模块名 import 功能名 as 别名


(5)使用import导入模块

        import 模块名
        import  模块名1,模块名2……  # 导入多个模块
        import math
        print(math.sqrt(9))


(6)使用from......import语句导入模块

        作用:使用import导入模块时,如果只需要部分函数,可以通过from实现、
        PS:使用时不需要增加模块名前缀

from math import sqrt, floor
print(sqrt(9), floor(10.88))  # 3.0 10

        PS:使用from……import导入的模块,必须保证导入的内容名称是唯一的。若导入模块有相同的变量、函数、类。则会覆盖之前导入的同名内容,因此需要检查,别名应简洁。

(7)使用as关键字为导入模块定义别名

原因:某些情况下,模块名称过长,建议使用as命名一个较为短的新名称,调用时使用新名称操作

from math import sqrt, floor
print(sqrt(9), floor(10.88))  # 3.0 10


(8)自定义模块

作用:将相关代码写在一个单独的文件中,并命名为“.py”。自行创建的模块名称不能与标准库中的模块名称相同        
例:新建一个模块的文件,实现素数的判断

当前目录新建prime.py
输入代码后保存退出def fun_prime(num):if num < 2:print('请输入大于2的整数')else:for i in range(2, num):if num % 2 == 0:return 0else:return 1
# 2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 

【三】包(package)

【1】包的概念

        在 Python 中,包(Package)是一种用于组织模块的方式,它通常是一个包含 __init__.py 文件的目录。包可以将相关的模块组织在一起,形成一个层次化的结构,以便更好地组织和管理代码。

【2】包的创建

        要创建一个包,你可以简单地创建一个目录,并在其中包含一个名为 __init__.py 的文件。这个 __init__.py 文件可以为空,也可以包含包的初始化代码。例如,假设你有一个名为 my_package 的包,其目录结构如下:

my_package/
├── __init__.py
├── module1.py
└── module2.py

【3】导入包

        在其他 Python 文件中使用包时,可以使用 import 语句将包导入到当前文件中。例如,如果有一个名为 my_package 的包,可以使用 import my_package 导入该包。

【4】使用包中的模块

        导入了包之后,你可以使用包中定义的模块、函数、类和变量。使用 . 运算符来访问包中的子模块。例如,如果 my_package 中包含了一个名为 module1.py 的模块,你可以使用 my_package.module1.function_name() 来调用其中的函数。

__init__.py 文件的作用: __init__.py 文件可以包含包的初始化代码,也可以用于指定包的公共接口。在 __init__.py 中可以定义在导入包时会自动执行的初始化逻辑,也可以通过在 __init__.py 中导入子模块,使得在导入包的时候就能够直接访问子模块。

【5】嵌套包

        包内部可以再包含子包,从而形成多层次的包结构。在这种情况下,包的导入和使用方式也类似,只是需要使用多级的.来访问子包中的模块。

 

import my_package.module1
import my_package.module2my_package.module1.some_function()

 或者使用别名:

import my_package.module1 as mod1mod1.some_function()

第三方包或模块的pip下载

命令行中输入pip  help查看
 

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

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

相关文章

Electron 跨平台打包

最近利用 Electron 制作跨平台安装包&#xff0c;记录步骤&#xff0c;踩坑多多。 首先&#xff0c;一步步搭建项目 一、搭建环境 初始化 package.json&#xff0c;这里要求 node 版本不低于14.16&#xff0c;我用的 v14.16.0&#xff0c;16版本在 Linux 下容易出现安装依赖…

js传递json数据过大的解决方案

protobufjs 使用protobuf&#xff0c;定义如下结构 Person.protobuf syntax "proto3";message Person {string name 1;int32 age 2; }Person.thrift namespace java com.example.Personstruct Person {1: required string name,2: required i32 age }使用bench…

教师考编需要什么条件

教师考编&#xff0c;了解考编需要什么条件是非常重要的。接下来&#xff0c;我来介绍几点教师考编的条件。 需要具备相应的学历背景。一般来说&#xff0c;考编需要具备本科或以上学历&#xff0c;并且所学专业与所报考的岗位相关。在某些特殊情况下&#xff0c;如报考幼儿园教…

【C语言(十一)】

C语言内存函数 一、memcpy使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果sourc…

什么是OPcache?它对性能有什么影响?

OPcache&#xff08;Opcode Cache&#xff09;是 PHP 的一个内置扩展&#xff0c;用于缓存 PHP 脚本的解释代码&#xff08;opcode&#xff09;&#xff0c;从而提高 PHP 应用程序的性能。当 PHP 脚本首次被解释执行时&#xff0c;PHP 将脚本编译成一组中间代码&#xff08;opc…

Spark Paimon 中为什么我指定的分区没有下推

背景 最近在使用 Paimon 的时候遇到了一件很有意思的事情&#xff0c;写的 SQL 居然读取的数据不下推&#xff0c;明明是分区表&#xff0c;但是却全量扫描了。 目前使用的版本信息如下: Spark 3.5.0 Paimon 0.6.0 paimon的建表语句如下&#xff1a; CREATE TABLE table_demo…

苍穹外卖项目笔记(12)— 数据统计、Excel报表

前言 代码链接&#xff1a; Echo0701/take-out⁤ (github.com) 1 工作台 需求分析和设计 产品原型 工作台是系统运营的数据看板&#xff0c;并提供快捷操作入口&#xff0c;可以有效提高商家的工作效率 接口设计 ① 今日数据接口&#xff1a; ② 订单管理接口&#xff1…

LeetCode Hot100 146.LRU缓存

题目&#xff1a; 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&…

计算机组成原理—中央处理器CPU

文章目录 CPU的功能与架构CPU的组成运算器控制器 指令执行过程指令流程指令执行方案 数据通路单总线结构专用通路结构 硬布线控制器设计硬布线执行流程硬布线CU内部怎么设计微操作的组合电路 总结 微程序控制器设计微程序的基本理念微程序的基本结构 微指令设计微程序CU设计 指…

Python文本信息解析:从基础到高级实战‘[pp]]‘[

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Python文本信息解析&#xff1a;从基础到高级实战&#xff0c;全文3600字&#xff0c;阅读大约10分钟。 文本处理是Python编程中一项不可或缺的技能&#xff0c;覆盖了广泛的…

Spark 单机搭建实战指南

摘要&#xff1a;本文将详细介绍如何在单台机器上搭建 Spark 分布式计算框架&#xff0c;涵盖环境准备、安装配置、运行测试等多个方面&#xff0c;帮助读者轻松上手 Spark 开发。 一、引言 Apache Spark 是一个开源的分布式计算系统&#xff0c;提供了强大的数据处理和分析能力…

2019年第八届数学建模国际赛小美赛D题安全选举的答案是什么解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 D题 安全选举的答案是什么 原题再现&#xff1a; 随着美国进入一场关键性的选举&#xff0c;在确保投票系统的完整性方面进展甚微。2016年总统大选期间&#xff0c;唐纳德特朗普因被指控受到外国干涉而入主白宫&#xff0c;这一问题再次成为…

资产侦查灯塔系统ARL部署

在docker和docker-compose都安装好的前提下进行部署 随便创建一个目录 mkdir docker_arl 切换到该目录 cd docker_arl 下面步骤是安装pip&#xff0c;如果已安装可以直接跳到wget命令下载灯塔系统文件 &#xff08;但是我不确定pip版本是否有影响&#xff0c;你也可以将命…

GAN的原理分析与实例

为了便于理解&#xff0c;可以先玩一玩这个网站&#xff1a;GAN Lab: Play with Generative Adversarial Networks in Your Browser! GAN的本质&#xff1a;枯叶蝶和鸟。生成器的目标&#xff1a;让枯叶蝶进化&#xff0c;变得像枯叶&#xff0c;不被鸟准确识别。判别器的目标&…

Java中的链表

文章目录 前言一、链表的概念及结构二、单向不带头非循坏链表的实现2.1打印链表2.2求链表的长度2.3头插法2.4尾插法2.5任意位置插入2.6查找是否包含某个元素的节点2.7删除第一次出现这个元素的节点2.8删除包含这个元素的所以节点2.9清空链表单向链表的测试 三、双向不带头非循坏…

【Python】人工智能-机器学习——不调库手撕深度网络分类问题

1. 作业内容描述 1.1 背景 数据集大小150该数据有4个属性&#xff0c;分别如下 Sepal.Length&#xff1a;花萼长度(cm)Sepal.Width&#xff1a;花萼宽度单位(cm)Petal.Length&#xff1a;花瓣长度(cm)Petal.Width&#xff1a;花瓣宽度(cm)category&#xff1a;类别&#xff0…

【STM32】STM32学习笔记-GPIO输入(07)

00. 目录 文章目录 00. 目录01. 按键简介02. 传感器模块简介03. 光敏电阻传感器04. 按键电路图05. C语言数据类型06. C语言宏定义07. C语言typedef08. C语言结构体09. C语言枚举10. 附录 01. 按键简介 按键&#xff1a;常见的输入设备&#xff0c;按下导通&#xff0c;松手断开…

量子技术将如何重构我们的生活

薛定谔的猫与量子世界的奥秘 在量子世界中&#xff0c;“薛定谔的猫”成为一个令人费解而神秘的概念&#xff0c;描述了生死叠加的状态。你能想通吗&#xff1f;想不通很正常&#xff0c;因为这是量子世界&#xff0c;是物理学最前沿的研究领域。在19世纪末&#xff0c;经典物理…

TCP/IP详解——ARP 协议

文章目录 一、ARP 协议1. ARP 数据包格式2. ARP 工作过程3. ARP 缓存4. ARP 请求5. ARP 响应6. ARP 代理7. ARP 探测IP冲突8. ARP 协议抓包分析9. ARP 断网攻击10. 总结 一、ARP 协议 ARP&#xff08;Address Resolution Protocol&#xff09;协议工作在网络层和数据链路层之间…

ImportError: cannot import name ‘BaseQuery‘ from ‘flask_sqlalchemy‘

ImportError: cannot import name ‘BaseQuery’ from flask_sqlalchemy’报错 原-报错的导入 from flask_sqlalchemy import SQLAlchemy as BaseQuery现-成功的导入 from flask_sqlalchemy.query import Query as BaseQuery