百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

致Python初学者:3分钟带你搞懂Python模块、包的区别和使用

off999 2024-09-20 22:40 51 浏览 0 评论

一、模块和包的定义

模块的定义:任何*.py 的文件都可以当作模块使用import 导入

包的定义:包含一个__init__.py和其他模块、其他子包的一个目录

实际项目中,所谓的包和模块分别代表什么,如下:

包就是指test

模块就是do_excel.py,http_request.py,run.py

二、导入包的各种方法

我们以上面这个目录讲解,在 run.py文件中导入各个包的方式

导入单个test包

import test

导入report、log包

# 同时导入,用逗号隔开,强烈推荐import report, log

  # 分开导入import reportimport log

导入单个test包,并起别名

import test as t

导入report、log包,并都起别名

import report as r, log as l

导入project包下的old包

import project.old

导入project包下的old包下的test包

# 方式一:链式调用import project.old.test

# 方式二:from .. import ..from project.old import test

到这里先总结下知识点

import后面跟的包名也是单位变量名(自己取的方便理解)

什么意思?以上面old包下的test包举例

场景:假设我要调用test包下的 test.py 里面的 run() 方法

如果用的是方式一,就得这样写

project.old.test.test.run()

而方式二,则是这样写

test.test.run()

可以看到import后面跟什么"变量",当你要调用包、模块里面的东西时,你就得先写"变量"再调用包名、模块名

我们可以再来看看下面的总结

import:完全导入

from .. import ..:部分导入(针对性导入)

怎么区分它们的意思捏?我们来看看哈;在根目录下的 test 包下的 run.py 代码如下

#!/usr/bin/env python

  # -*- coding: utf-8 -*-

  num =1

  floats = 2.22

  strs = "字符串"def sum():

  print("我是sum")

  class test():

  def test(self):

  print("test class")

假设,在项目中其他文件中想调用 run.py 下的变量、函数名、类名

三、导入其他模块的变量、函数名、类名

方式一:import方式

导入的是 run 模块里面所有内容(包括变量、函数、类名),但是还是得通过 test.run 去链式调用

import test.run# 调用num变量print(test.run.num) # 输出1

  # 调用sum方法print(test.run.sum()) # 输出 我是sum

有些小伙伴就想问,难道我不能指定变量、函数名、类名吗?让我们来试试

#!/usr/bin/env python

  # -*- coding: utf-8 -*-

  import test.run.num

  # 调用num变量print(test.run.num)

首先,如果你用的是Pycharm,在import最后的num会报黄,hover上去会提有提示 No module named num

然后,运行下文件会报错如下

Traceback (most recent call last):

  File "F:/test/tests.py", line 5, in <module>

  import test.run.num,test.run.floats

  ModuleNotFoundError: No module named 'test.run.num'; 'test.run' is not a package

错误的大概意思就是: test.run.num 不是一个模块名, test.run 不是一个包

可以看到import的完全导入意思就是:导入最小单位是模块,而不是变量、函数名、类名

方式二:from .. import ..

# from 包名.模块名 import 变量/函数/类名from test.run import num from test.run import sumfrom test.run import testssfrom test.run import floats

  if __name__ == '__main__':

  print(num)

  print(sum())

  print(testss().test())

  print(floats)

执行结果

1

  我是sum

  test class

  2.22

可以看到from .. import .. 的部分导入意思就是:导入最小单位可以是模块,也可以是变量、函数名、类名

四、导入模块的方法

根据上面讲的知识,如果要导入模块有两种方式,一个就是 import 模块名 一个就是 from 报名 import 模块名

导入test包下的run模块

# importimport test.run

  # fromfrom run import test

导入test包下的run、tests模块

# importimport test.run,test.tests

  # fromfrom run import test,tests

特别知识

提问:import 包/模块,包和模块是从哪里导入的?

回答:我们是通过 sys.path 所包含的路径列表你下,按顺序查找的

怎么理解?

在Pycharm工程下敲以下代码

import sysprint(sys.path)

执行结果

['F:\\moocInterface\\test', 'F:\\moocInterface', 'D:\\PyCharm 2019.3.1\\plugins\\python\\helpers\\pycharm_display', 'D:\\python3.6\\python36.zip', 'D:\\python3.6\\DLLs', 'D:\\python3.6\\lib', 'D:\\python3.6', 'D:\\python3.6\\lib\\site-packages', 'D:\\python3.6\\lib\\site-packages\\django-2.1.5-py3.6.egg', 'D:\\python3.6\\lib\\site-packages\\pytz-2018.9-py3.6.egg', 'D:\\PyCharm 2019.3.1\\plugins\\python\\helpers\\pycharm_matplotlib_backend']

可以看到:

1.当前文件所在路径是放在第一位

2.工程路径放在第二位

3.Pycharm相关路径放在第三位

我们从系统cmd进入Python解释器敲以下代码,查看结果

>>> import sys>>> print(sys.path)

结果如下

['', 'D:\\python3.6\\python36.zip', 'D:\\python3.6\\DLLs', 'D:\\python3.6\\lib', 'D:\\python3.6', 'D:\\python3.6\\lib\\site-packages', 'D:\\python3.6\\lib\\site-packages\\django-2.1.5-py3.6.egg', 'D:\\python3.6\\lib\\site-packages\\pytz-2018.9-py3.6.egg']

五、结论:

我们在Pycharm下import的包、模块,优先会在工程目录下寻找,找不到才会从Python默认安装路径下找。

请关注+私信回复:“测试”就可以免费拿到软件测试学习资料。

相关推荐

路由器账号和密码忘了怎么办

你好,如果你忘记了路由器的用户名和密码,你可以尝试重置一下路由器,大多数路由器都配备了一个复位按键。在重置路由器之后,用户名和密码将被还原为默认值,你可以在路由器的用户手册或厂家网站上找到默认的用户名...

win10永久禁止自动更新(win10禁止自动更新彻底)

阻止Windows10自动更新的方法如下:使用“本地组策略编辑器”:按下“Win+R”键,输入“gpedit.msc”打开本地组策略编辑器,找到“计算机配置”>“管理模板”>“W...

联想笔记本怎么看配置和型号

联想笔记本看配置的方法如下1、打开电脑,点击桌面的计算机,右键菜单里选择【属性】;打开后,即可看到电脑系统的大概信息;2、如果要看比较详细的设备相关信息,点击桌面的计算机,点击右键,在菜单里选择【系统...

怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
  • 怎样把打印机连接到电脑上(怎么把打印机连接电脑上)
photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
  • photoshop6序列号(photoshop8.01序列号)
win10下载应用商店(win10应用商店打不开)

1、点击Win10系统的开始菜单,然后在点击应用商店;2、打开Win10应用商店后,在搜索框里输入想要搜索的应用软件,然后点击检索;3、点击搜索到的应用,点击安装;4、点击安装后,系统会提示要切换到这...

dell电脑重装系统win10(dell 重装win10系统)

戴尔笔记本重装系统win10的步骤如下:制作好wepe启动盘之后,将win10系统iso镜像直接复制到U盘。在需要重装系统的戴尔电脑上插入pe启动盘,重启后不停按F12启动快捷键,调出启动菜单对话框,...

android升级包下载安装(android 升级包)

打开手机系统更新升级,前提是官方有新系统推送才能更新  哪个大不一定,但一般规律如下:  1、小版本的更新,通常越更新越大。比如3.1更新到3.2,通常是修复bug,代码量通常会增大,体积就会增大。 ...

hdd硬盘和ssd(ssd硬盘和hdd硬盘是什么意思)

HDD硬盘和SSD硬盘是两种不同类型的电脑存储设备,它们有着以下区别:1.工作原理:HDD硬盘使用机械旋转的磁盘和读写磁头来存储和读取数据,而SSD硬盘则使用闪存存储数据,类似于USB闪存盘。2....

电脑免费软件下载大全(电脑上免费的下载软件)

正常情况下,如果我们想要在自己的电脑上面下载一个不要钱的单机游戏,那么我们是可以直接在我们的软件管理中心进行一个下载的,这个时候我们只需要通过一个权限就能够正常的下载,当然我们也是可以在一些小游戏的软...

mpp文件转换excel(mpp转换成pdf)

要将Excel表格转换为MPP格式,您可以按照以下步骤操作:1.打开Excel表格并确保数据按照项目的不同阶段或任务进行组织。2.将Excel表格中的数据复制到一个新的MicrosoftProj...

win7旗舰版开机密码忘记按f2

方法如下:开始-控制面板-用户帐户;在打开的更改用户帐户界面点击要更改的帐户;然后点击帐户左面的更改密码按钮;在打开的页面上,输入一次当前使用的密码,输入2次要更改的新密码然后保存退出就可以了...

笔记本无音频输出设备(笔记本无音频输出设备)

1、没有声卡驱动,解决方法就是找到笔记本的官网,下载电脑声卡的驱动安装即可。2、没有外界的音频播放设备,解决方法就是买一个外界的音频播放设备插到电脑主机的音频接口上即可。笔记本电脑显示未安装任何音频输...

iso文件能用手机打开吗(iso文件能用手机打开吗安全吗)

一般的压缩软件就可以打开的,比如,好压软件,这个打开只是解压形式的,如果你说的是运行iso文件,这个没有,况且安卓系统也不支持iso运行ISO文件一般用于光盘镜像文件的存储,如果想要在手机上运行ISO...

win7系统卡顿怎么优化(win7很慢很卡怎么优化)

1、首先打开安全卫士,进入安全卫士首页,单击软件窗口右下角的“更多”图标,打开扩展应用程序。2、单击选择“我的工具”。3、在我的工具菜单里面找到“人工服务”单击打开人工服务。4、在人工服务对话框有很多...

取消回复欢迎 发表评论: