python中的模块库包有什么区别?
一文带你分清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.0
from..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()
文班亚马和亨德森最终会花落谁家?小波特领衔的休斯顿火箭坎宁安受伤后的底特律活塞多年摆烂的夏洛特黄蜂,追逐第二个邓肯的圣安东尼奥马刺,目前来看,是这四支球队在争夺花魁,文班亚马和亨德森,的确有让人垂涎的天赋,值得摆
勇士报价伍德,筹码诚意十足最近几天,金州勇士队在主场令人震惊地输给了实力较弱的奥兰多魔术队和底特律活塞队,他们为自己赢得了一项可耻的荣誉。具体来说,就是他们被重建中的球队横扫,他们的总战绩只有26胜56负。
莱昂纳德谈六连败这种情况能检验你是否享受比赛是很棒的挑战直播吧1月9日讯NBA常规赛,快船主场108112不敌老鹰,遭遇六连败。赛后,莱昂纳德在更衣室接受了记者的采访。谈到六连败,他表示我认为现在的情况没那么糟,大家的状态都很积极。这种
葡萄牙新任主帅马丁内斯,是一名怎样的教练?前比利时主教练马丁内斯将担任葡萄牙新的主帅,马丁内斯执教下的比利时黄金一代,取得过18年世界杯季军的成绩,而在刚结束的卡塔尔世界杯小组出局,在21年欧洲杯,正是他带领下的比利时在1
常规赛第24轮,上海久事男篮战胜新疆男篮上海久事男篮VS新疆男篮11496今天下午1530,CBA常规赛第24轮上海久事男篮对阵新疆男篮。上海久事男篮全力出击,最终战胜新疆男篮。第一节开场,新疆男篮率先获得球权,阿不都沙
泰山队转会2消息韦世豪加盟生变,格德斯队友有望成费莱尼替身虽然足协杯的比赛还没有踢完,但山东泰山队新赛季的引援工作已经在按部就班地进行中。最近一段时间,有不少球员都与泰山队传出了绯闻,其中最引人关注的一个无疑就是韦世豪。近期,有不少国内体
利夫全面发挥,首钢男篮取得四连胜过程艰难,结果满意北京首钢队在昨天的CBA常规赛中延续了这一阶段的比赛特点,以90比83击败南京同曦队,新年以来取得四连胜。本场比赛,首钢队阵中有人缺席,也有人回归。吉布森和雷蒙因
西河半程马拉松大赛!开赛!来源郴州市苏仙区政府要闻号外!号外!1月7日苏仙区2023年西河骑行徒步暨西河半程马拉松大赛在许家洞镇拉开帷幕火热开跑本次活动约有300余名选手报名参加共3个项目分别是自行车骑行徒
steam免费游戏推荐steam上除了很多大作以外,还有很多免费的游戏,体量虽小但也很耐玩下面就一起来看看吧steam游戏分享1。鹅鸭杀还有人没玩过这款最近爆红的游戏吗,游戏类型类似狼人杀跟amongu
大话西游2(887)180个神兽碎片换了飞鱼蝙蝠,这是要一飞冲天?hello大家好,我是老夏,一个热爱大话西游2经典版的玩家。这里会在每天下午的五点更新内容,给大家带来每日牛图系列板块,里面有好玩的图片,有鬼使神差的炼化逗比的日常啼笑皆非的世界喊
枪神TrigunSTAMPEDE公布新配音卡司周六已首播近日,经典漫画枪神Trigun的新作动画TrigunSTAMPEDE官方透露了两位新的配音演员。新演员将为出现在动画第2集的角色配音,它们分别是Nebraska(CV千叶繁)Gof
库克苹果的长期目标是不用地球任何资源制造产品CNMO新闻每年的苹果新品发布会都是一大看点,今年的iPhone14系列也不例外,热度非常高。有数据显示,苹果90天内在全网获得了920个热搜。当然,苹果CEO最近也没闲着。近日,
华为P82015年4月15日,在伦敦举行发布会,新旗舰P8在此发布会上亮相。HUAWEIP8采用一体式金属机身设计,弧形侧边框,机身高度144。9毫米,宽度71。9毫米,厚度6。4毫米,重
3000左右的手机哪个性价比最高?力荐这三款,每一款都独具特色换机潮的到来,下半年很多消费者在选择新机上有点头痛,新款手机也在轮番上市,通过不断的寻找和对比,还是很难第一时间选择到心仪的产品。当然,稍晚发布的新机在配置上都会更好性能配置要强上
红米下半年还有大动作,note12Pro已经在路上,配置再次将升级大家好,我是三月。近期大家可以发现手机市场上发布的基本都是一些旗舰手机,配置确实强悍,每一款都有着相当强的实力,但是价格也确实给力。所以对于一些朋友来说对千元机就有些想念了,毕竟已
OPPO设计优势得以展现,高颜值高性能为什么这样说呢?因为在过去OPPO主要集中在线下市场,而线下相比线上来讲对于配置并没有那么的感冒,反而更加关心机器的外观设计自拍等功能,所以OPPO花费了大量的精力放在了外观设计上
设计源于生活,苹果的神设计其实没那么神最近在网上看到吹苹果实体静音键的人很多,都说这是神设计苹果的体验的牛细节等等。不可否认,这个静音键的确有一定的好处,但是这种好处并没有网上吹嘘的那么神。最初苹果设置静音键是因为系统
三星本月向数亿部Galaxy旧手机推送了固件更新稿源cnBeta尽管早已超出了官方的最初承诺,本周还是有数亿旧Galaxy设备用户收到了三星推送的一个固件更新。TechSpot指出,本轮更新的文件包相当紧凑描述中也没有提到多少内
米家智能家居凌动开关和凌动功能可以解决哪些大问题?在米家智能家居APP中,凌动开关我们会经常听说,而大部分米家APP生态中的智能灯具也都支持凌动功能。随着智能家居深入到千家万户,以及人们对智能家居系统功能的要求提升,凌动功能的出现
华硕天选3今年翻身成功了吗?所见所得,都很科学上一年天选2因为残血显卡的问题给很多人留下了不好的印象,那今年天选3怎么样呢?图为天选2今天我们就来分析一下这台机器,配置是i712700H140瓦3060的,屏
也许,iPhone14mini还可以抢救一下?北京时间8月26日,苹果官方发布了秋季新品发布会的邀请函。经过近一年的预热,大家也都基本接受了本次发布会苹果将取消iPhone14mini的产品布局。不过最近有消息显示,似乎苹果依
好评率超高的三款电视,不输国际洋大厂,国产巨头技术再下一城现在购买电视的用户一种看中功能和画质,一种看中的是需求和尺寸。大部分都会认为国外品牌才拥有这些性能,比如三星LG这一类的,但往往国外中高端功能画质来说性价比方面也会巨高,近两年国产