python | 模块和库

目录

  • 1 模块

    • 1.1 模块的定义
    • 1.2 模块的导入
      • 1.2.1 import 导入
      • 1.2.2 from import 导入
  • 2 程序入口
    • 2.1 模拟入口
  • 3 库
    • 3.1 pip安装
    • 3.2 文件安装
    • 3.3 自定义安装

?

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:\Users\Administrator\akima-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,看看有无报错即可判断是否安装成功。

原文地址:https://www.cnblogs.com/1k-yang/p/12597529.html

时间: 2024-11-07 22:43:56

python | 模块和库的相关文章

Python强大的自有模块——标准库

引言:Python的强大体现在"模块自信"上,因为Python不仅有很强大的自有模块(标准库),还有海量的第三方模块(或者包.库),并且很多开发者还在不断贡献在自己开发的新模块(或者包.库).本文将向大家概述介绍Python的自有模块--标准库. 本文选自<跟老齐学Python:轻松入门>. "Python自带'电池'",这种说法流传已久. 在Python被安装的时候,就有不少模块也随着安装到本地的计算机上了.这些东西就如同"电力"一

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

# [email protected] coding: utf-8 [email protected] -- Python 常用模块和库介绍 第一部分:json模块介绍 import json 将一个Python数据结构转换为JSON: dict_ = {1:2, 3:4, "55":"66"} # test json.dumps print type(dict_), dict_ json_str = json.dumps(dict_) print "js

Python 3标准库 第十四章 应用构建模块

Python 3标准库 The Python3 Standard Library by  Example -----------------------------------------第十四章     应用构建模块-----------------------------14.1  argparse:命令行选项和参数解析----------------------------- argparse模块 14.1.1  建立解析器 14.1.2  定义参数 argparse模块 14.1.3 

【python基础】random随机数模块(库)方法汇总

random 随机数模块(库) 1.random.randint(a, b) : 在某个范围内随机产生一个整数 [a, b], 能取到a, 也能取到b 2.random.random() : 随机产生一个0-1之间的浮点数 [0, 1), 0可以取到, 1取不到 3.random.uniform(a, b) : 在某个范围内随机产生一个实数 [a, b], 能取到a, 也能取到b 4.random.randrange(start, stop, step) : 在某个范围内随机产生一个整数 [st

python模块以及导入出现ImportError: No module named &#39;xxx&#39;问题

python模块以及导入出现ImportError: No module named 'xxx'问题 python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模 块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用 如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比 如在a.py中使用b.py:  import b 但是如果要import一个不同目录的文件(例如b.py)该怎么做

Python 模块学习

模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.datetime 11.re 12.random 13.configparser 14.traceback 15.yaml 16.itertools 17.logging 18.urllib.urllib2 19.paramiko ###

python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )

<python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )>http://blog.csdn.net/lainegates/article/details/19565823 目前有很多开源的Python/c++ 绑定工具,搜了好多岾子,这里稍微总结下. SWIG 支持 Python 2 and 3 配置正确的话,可以全自动完成封装(*.i文件需要自己写) 当不是全自动的时候,它大多会重复你的.h文件并给出提示 除了P

python 学习第五天,python模块

一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py结尾的python文件(文件名:test.py,对应的模块名:test) (2)包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 2,导入的方法 (1)import module_name导入某个模块 (2)import module_name,module2_

转:python 的开源库

Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅里叶变换和随机数生成函数. SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的计算.其功能与软