python中的模块、库、包有什么区别?
off999 2025-08-02 21:08 48 浏览 0 评论
一文带你分清Python模块、包和库。
一、模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块能定义函数,类和变量,模块也能包含可执行的代码。
1.1 导入模块
1.1.1 导入模块的方式
- import 模块名
- from 模块名 import 功能名
- from 模块名 import *
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
1.2 导入方式详解
import 语法:
# 1. 导入模块
import 模块名
import 模块名1, 模块名2...
# 2. 调用功能
模块名.功能名()体验:
import math
print(math.sqrt(9)) # 3.0from..import..
语法:
from 模块名 import 功能1, 功能2, 功能3...体验:
from math import sqrt
print(sqrt(9))from .. import *
语法
from 模块名 import *体验:
from math import *
print(sqrt(9))as定义别名
语法
# 模块定义别名
import 模块名 as 别名
# 功能定义别名
from 模块名 import 功能 as 别名体验
# 模块别名
import time as tt
tt.sleep(2)
print('hello')
# 功能别名
from time import sleep as sl
sl(2)
print('hello')1.2 制作模块
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说定义模块名必须要符合标识符命名规则。
1.2.1 定义模块
新建一个Python文件,命名为 my_module1.py ,并定义 testA 函数。
def testA(a, b):
print(a + b)1.2.2 测试模块
在实际开中,当一个开发员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发员会在py文件中添加一些测试信息.,例如,在 my_module1.py 文件中添加测试代码。
def testA(a, b):
print(a + b)
testA(1, 1) 12345此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行 testA 函数的调用。
解决办法如下:
def testA(a, b):
print(a + b)
# 只在当前文件中调用该函数,其他导入的文件内不符合该条件,则不执行testA函数调用
if __name__ == '__main__':
testA(1, 1) 1.2.3 调用模块
import my_module1
my_module1.testA(1, 1)1.2.4 注意事项
如果使用 from .. import .. 或 from .. import * 导入多个模块的时候,且模块内有同名功能。当调 用这个同名功能的时候,调用到的是后导入的模块的功能。
体验:
# 模块1代码
def my_test(a, b):
print(a + b)
# 模块2代码
def my_test(a, b):
print(a - b)
# 导入模块和调用功能代码
from my_module1 import my_test
from my_module2 import my_test
# my_test函数是模块2中的函数
my_test(1, 1)1.3 模块的定位顺序
当导入一个模块,Python解析器对模块位置的搜索顺序是:
1. 当前目录
2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
模块搜索路径存储在system模块的sys.path变量中。变量包含当前目录,PYTHONPATH和由安装过 程决定的默认目录。
注意
- 自己的文件名不要和已有模块名重复,否则导致模块功能用法使用
- 使用from 模块名 import 功能 的时候,如果功能名字重复,调用到的是最后定义或导入的功 能。
1.4 __all__
如果一个模块文件中有 __all__ 变量,当使用 from xxx import * 导入时,只能导入这个列表中的元素。
my_module1模块代码:
__all__ = ['testA']
def testA():
print('testA')
def testB():
print('testB')导入模块的文件代码:
from my_module1 import *
testA()
testB()二、库
严格来说,Python中没有库(library)的概念,模块(module)和包(package)才是Python语法中有的概念。这个库的概念是从其他编程语言引进来的,库的概念是具有相关功能模块的集合,只是一个通俗的说法。平时说的库既可以是一个模块,也可以是一个包。
包和模块之间的关系,如下图:
一个包里面可以包含很多的模块。模块是一个包含有组织的代码片段,一个.py文件对应一个模块,文件名就是模块名(去除掉后缀.py)。
三、包
包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字 为 __init__.py 文件,那么这个文件夹就称之为包。
3.1 制作包
[New] — [Python Package] — 输入包名 — [OK] — 新建功能模块(有联系的模块)。
注意:新建包后,包内部会自动创建 __init__.py 文件,这个文件控制着包的导入。
3.1.1 快速体验
1. 新建包 mypackage
2. 新建包内模块: my_module1 和 my_module2
3. 模块内代码如下
# my_module1
print(1)
def info_print1():
print('my_module1')# my_module2
print(2)
def info_print2():
print('my_module2')3.2 导入包
3.2.1 方法一:
import 包名.模块名
包名.模块名.目标3.2.2 快速体验
import my_package.my_module1
my_package.my_module1.info_print1()3.2.3 方法二
注意:必须在 __init__.py 文件中添加 __all__ = [] ,控制允许导入的模块列表。
from 包名 import *
模块名.目标3.2.4 快速体验
from my_package import *
my_module1.info_print1()相关推荐
-
- 联想win7怎么进入bios设置(联想win7进入bios设置win10)
-
联想电脑win7进入bios设置的具体步骤如下: 1、首先我们打开电脑的同时,按下键盘上的“F2”。2、然后我们在弹出来的窗口中就可以进入到BIOS界面中。3、然后我们按下键盘上的“F10”,之后回车确定即可退出。联想电脑win7...
-
2025-11-09 14:03 off999
- 优盘里面的文件被误删了能否找回
-
如果您的文件在很久以前被误删并且没有进行任何操作,那么有可能通过一些专业的数据恢复工具来恢复被删除的文件。以下是一些可能的操作步骤:1.停止使用U盘:为了最大限度地提高恢复成功的几率,请停止使用U盘...
- 电脑系统程序下载(电脑应用程序下载)
-
1、首先下载并安装DriverDroid,运行后根据设置向导进行设置。2、然后注意安卓手机已获取ROOT,设置时需要连接电脑。3、将手机自动下载的bios文件移动到镜像根目录下(手机内存/Downlo...
- 万能网卡驱动离线安装包下载
-
电脑没网是吧,那你可以先用手机下载。之后放电脑上安装的万能网卡驱动下载地址http://drivers.160.com/universal/camera.html该驱动能够使大部分的网卡能够被系统...
- 正版office和盗版区别(office正版和盗版可以共存吗)
-
区别主要有三方面:1.office正版是付费的,而且价格相对而言较高,盗版呢价格相对低或者干脆免费。2.office正版因为是官方发行,文件肯定完整,功能齐全,稳定。盗版呢一般都是破译的或者是拷贝的,...
- ヽ这个符号怎么打出来(这个符号怎么打出来是在中间的)
-
下载酷狗拼音,软键盘就有了。ˋ☆╲ヽ
- 120g固态硬盘够用吗(10几年的老电脑换个固态硬盘)
-
一般办公家用还是够用了,分两个区,系统盘分50G,剩余的分一个区做资料盘。特殊要求,资料文件比较多的话,128g是不够用,只能分一个区。这个主要取决于您电脑主要的用途,如果您的电脑只是用来日常办公和娱...
- 谷歌浏览器google(谷歌浏览器googleplay)
-
GoogleChrome,又称Google浏览器,是一个美国Google(谷歌)公司开发的网页浏览器。该浏览器是基于其他开源软件所撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且...
- android13正式版下载(安卓版本13)
-
出现该问题的原因是,用户在设置里开启了新下载的APP,仅添加到APP资源库选项。大家只要进入“设置-主屏幕”,把新下载的APP,改为“添加到主屏幕”即可解决问题。修改完成后,你再进入AppStore下...
- firefox浏览器安卓版(firefox浏览器安卓版 打开本地网页)
-
要进入火狐浏览器手机版的主页,你可以通过以下几种方式进行:首先,打开火狐浏览器App,然后点击右上角的三条横线菜单按钮,接着选择“主页”选项。另外,你也可以直接在浏览器地址栏中输入“about:hom...
- 电脑cpu性能排行榜天梯图(“电脑cpu性能天梯图”)
-
一、英特尔酷睿i7670。这款英特尔CPU采用的是超频新芯,最大程度的提升处理器的超频能力。二、英特尔酷睿i74790kCPU:这款CPU采用22纳米制程工艺的框架,它的默认频率是4.0到4.4Ghz...
- 电脑自由截屏的快捷键是什么
-
快捷键是ctrl+alt+a,我们可将聊天窗口缩小,放在旁边。然后找到想要截屏的位置,这时我们在截屏旁边,就更加的方便了。在键盘中按下PrintScreenSysRq(简写为PrtSc)键,此快捷...
- windows10精简版官网下载(win10官方精简版下载)
-
精简版的意思的它比原版的功能和软件少了,其实精简版的更适合大众,没有多余的其他必要功能,更快Win10版本主要为四个分别是专业版、家庭版、企业版、教育版,其实除了这四个之外,还有工作站版、LTSB/L...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
