Python的模块与包

前言        

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

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

【一】如何引入模块

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

import os

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

import os

print(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 math

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

( 2 ) 第三方模块

import numpy as np

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

( 3 ) 自定义模块

import my_module

my_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 0
        else:
            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.module2

my_package.module1.some_function()

 或者使用别名:

import my_package.module1 as mod1

mod1.some_function()

第三方包或模块的pip下载

命令行中输入pip  help查看
 

相关推荐

  1. Python模块

    2023-12-15 00:36:02       46 阅读
  2. python 模块

    2023-12-15 00:36:02       16 阅读
  3. python模块

    2023-12-15 00:36:02       25 阅读
  4. Python 模块

    2023-12-15 00:36:02       37 阅读
  5. Python模块,库

    2023-12-15 00:36:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 00:36:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 00:36:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 00:36:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 00:36:02       18 阅读

热门阅读

  1. CAN静默回环模式测试

    2023-12-15 00:36:02       36 阅读
  2. Oracle开发和应用——基本SQL语句2(SELECT)

    2023-12-15 00:36:02       42 阅读
  3. python中的函数 #2

    2023-12-15 00:36:02       38 阅读
  4. WPF里面的Dispatcher详解

    2023-12-15 00:36:02       36 阅读
  5. Go HTTP 调用(上)

    2023-12-15 00:36:02       30 阅读
  6. Docker常用命令总结

    2023-12-15 00:36:02       43 阅读
  7. leetcode做题笔记2048. 下一个更大的数值平衡数

    2023-12-15 00:36:02       33 阅读
  8. RESTful API,以及如何使用它构建 web 应用程序

    2023-12-15 00:36:02       31 阅读
  9. 【Python 千题 —— 基础篇】多行输出

    2023-12-15 00:36:02       39 阅读