python | 模块和库

Posted 1k-yang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python | 模块和库相关的知识,希望对你有一定的参考价值。

?

1 模块

1.1 模块的定义

在编程语言中,代码块 >> 函数 >> 类 >> 模块 >> 包(库),是逐级封装,层层调用的关系。在Python中,一个.py文件就是一个模块,模块是比类更高一级的封装。

  • 代码块:小至一行代码,大到一个模块,一个函数……都是代码块,此处指一行代码
  • 函数:函数是指封装好、能复用,用来实现单一特定功能的代码块
  • 类:类是数据类型概念的发展,用来描述相似对象的共性,对象所属的数据类型就是“类”
  • 模块:一个.py文件就是一个模块,包含定义好的函数和变量。分为自定义模块、内置模块和第三方模块
  • 包:包是以目录形式存在的模块集合,类似于包含__init__.py文件的文件夹,它包含__init__.py文件、子包及多个模块。包是比模块高一级的封装
  • 库:具有相关功能包的集合。分为标准库、第三方库以及自定义模块

特别说明的是:模块、包、库三者其实都是模块,只不过是个体和集合的区别,是对模块的不同组织方式。

?
自定义模块就是你自己编写的模块,如果你在网上发布自己的模块并允许他人使用,那么就变成了第三方模块,内置模块是python安装包自带的模块。使用模块的好处又很多,比如:

  • 可维护性:提高了代码的可维护性
  • 可复用性:编写代码不必从零开始。当一个模块编写完毕,就可以被其他的模块引用,不用重复造轮子
  • 可区分性:使用模块还可以避免类名、函数名和变量名发生冲突。相同名字的类、函数和变量完全可以分别存在不同的模块中。但是也要注意尽量不要与内置函数名(类名)冲突

?

1.2 模块的导入

假设已经定义好一个模块module_a,它包含add1函数,则导入方法如下。

?

1.2.1 import 导入

语法 示例 函数调用
import 模块1 [,模块2,...] import module_a module_a.add1()
import ... as ... import module_a as md md.add1()

?

1.2.2 from import 导入

语法 示例 函数调用
from ... import 函数1 [,函数2,...] from module_a improt add1 add1()
from ... import ... as ... from module_a improt add1 as ad ad()
from ... import * from numpy import * add1()

模块的导入,具体哪种方法更好没有统一规定,只要根据自己使用习惯,注意导入时别发生命名冲突即可。

?

2 程序入口

如C、C++等语言都有一个main函数作为程序的入口,main去调用函数库,函数库之间不能相互调用(如下图A和B之间),即程序的运行是从main函数开始。而python是脚本语言,没有统一入口,函数库之间可以互相调用。

技术图片

所以,python代码执行有两种情况:

  • 情况1:直接作为脚本执行,即直接运行该模块
  • 情况2:先import到其他python模块中再调用执行(模块重用),其实就是「第三方库」。

而python通过if__name__ == ‘main‘ : 语句,控制这两种不同情况下的代码执行。

?

2.1 模拟入口

基于python代码执行机理,可用if__name__ == ‘main‘ : 语句模拟程序入口,实现对python代码执行的控制。

  • 以脚本直接执行时,if__name__ == ‘main‘: 后面语句会执行(该语句多为函数正确性验证语句)
  • 被import到其他模块中执行时,if__name__ == ‘main‘: 后面语句不会执行
# 直接作为脚本执行
def add1(x):
    x = x+2
    return x
add1(10)

# 模块重用执行
import os
os.chdir(‘D:\data\python_file‘) 
from addx import add1
add1(9)

所以,想运行以脚本直接执行时才执行的命令时,可以将这些命令语句放在if__name__ == ‘main‘: 判断语句之后:

# 自定义一个函数add1
def add1(a):
    a=a+1
    return a
print(__name__)

if __name__ == "__main__":       # 脚本直接执行时,运行后面的语句;被import执行时,不运行后面的语句
    print(add1(2))               # 函数正确性验证和测试

?

3 库

库是具有相关功能包(模块)的集合。分为标准库、第三方库以及自定义模块。库和包的关系,类似于类和实例化,库是抽象的,包是具体的。下面着重介绍python第三方库的安装

?

3.1 pip安装

在安装好Anconda后,打开Anconda Prompt,用以下指令就可以进行安装、卸载、查看等操作。

语法 描述
pip install … 安装
pip uninstall … 卸载
pip download … 下载
pip list 查看安装列表

?

3.2 文件安装

若遇到pip安装失败,可考虑使用文件安装,具体操作步骤如下:

  • 打开网页,找到正确的待安装库(注意windows位数和库版本号)

  • 左击文件下载待安装库

  • 管理员身份运行Anaconda Prompt,输入pip install 安装库文件的路径 + 安装库的名称,最后回车运行。如:C:UsersAdministratorakima-2019.1.1-cp34-cp34m-win32.whl

?
文件下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,网站包含很多Windows环境下可直接安装的第三方库文件。如:akima-2019.1.1-cp34-cp34m-win32.whl,akima是库名称;2019.1.1是库版本号;cp34指python版本号

?

3.3 自定义安装

安装第三方库提供的安装方式和步骤进行,优先级最低。

安装好后,在python的代码或交互环境里导入相应库,如import numpy,看看有无报错即可判断是否安装成功。



以上是关于python | 模块和库的主要内容,如果未能解决你的问题,请参考以下文章

实战篇一 python常用模块和库介绍

目标代码文件可执行文件和库

C:目标代码文件 可执行文件和库

C基础——目标代码文件可执行文件和库

常用python日期日志获取内容循环的代码片段

Haskell 中的模块、包和库有啥区别?