• 包是一个文件夹,也是一个模块,只是为了区分单个文件的模块,称之为包。因为单纯的文件夹无法作为模块,文件夹内的_init_.py(写死/规定)文件才是真正需要的东西

  • 所以本质上,包就是一个带_init_.py的文件夹。

包被导入时发生的三件事

import aaa
  1. 打开aaa里_init_.py文件
  2. Python解释器解释运行 __init__.py文件,把__init__.py里的名字丢入aaa模块的名称空间
  3. 导入aaa其实就是导入__init__里的名字
  • 和模块不同的地方在于:模块是直接打开文件,而包是打开里面的_init_.py文件

为什么要有包

  • 模块内的函数太多了,不方便管理,需要把一个模块分成多个,但是分开后导入方式就变了。所以就有了包,可以起到一个类似于函数装饰器的作用
  • 好处:不改变模块原先的导入方式,并且简化模块开发者的管理复杂度

相对路径

from .aaa import *
  • .代表当前
  • ..代表上一级
  • ...代表上一级的上级

相对路径的好处在于:万一包的名字改变了,使用相对路径不会对包内的名字造成任何影响

  • 相对路径是相对当前文件本身而言
  • .号前面必须是一个包,不能是一个模块
  • 当文件是执行文件时,不能使用相对路径

绝对路径

  • 文件本身的路径

day22 包,相对/绝对路径的更多相关文章

  1. springBoot 项目war包部署及改为war包后资源路径错误问题

    参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...

  2. linux下 彻底修改python的包/模块导入路径

    python模式下,有时候需要导入  import某些模块或者包.明明这个模块/包是存在的,却提示导入错误,比如,“ImportError: No module named lxml”. 但是当你在命 ...

  3. 22.访问jar包下资源路径里的文件

    访问jar包下资源路径里的文件 因为打包路径和你构建的代码路径是有差异的,想要查看真实的路径情况,可以查看编译后的classes目录下的文件结构. 想要获取资源文件流: private InputSt ...

  4. mysql 开发进阶篇系列 30 数据库二进制包(安装指定路径,目录介绍)

    一. 指定路径 在上一篇里,二进制包解压后,全部放入在/usr/local/mysql目录下,在安装时指定了基础目录和数据目录, --basedir=/usr/local/mysql --datadi ...

  5. 获取jar包当前的路径

    转自:http://kinganpo.iteye.com/blog/876243 import java.io.File; /** * 获取打包后jar的路径信息 * @author Administ ...

  6. jmeter的Classpath即类或者jar包的搜索路径设置

    对于master-slave模式,插件和依赖都需要放到slave上才能生效,并且需要重启slave使插件生效 查看配置文件:apache-jmeter-3.1/bin/jmeter.propertie ...

  7. struts2,hibernate等模板配置文件在jar包中的路径,以及所需要的包

    一.struts2 1.struts的配置模板文件struts-default.xml的位置: struts-2.3.16.1 --> src --core --> src --> ...

  8. java war包 路径--解决war包中文件路径问题

    https://blog.csdn.net/u013409283/article/details/51480948 转自:http://free-chenwei.iteye.com/blog/1507 ...

  9. django-导入应用包的搜索路径

    创建应用包 在 settings.py注册和配置urls.py中要按顺序导入包名和应用名 settings.py INSTALLED_APPS = ( 'django.contrib.admin', ...

随机推荐

  1. StringUtils.isNotBlank 和StringUtils.isNotEmpty 的区别

    StringUtils.isNotBlank判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成下面是示例:StringUtils.isNotBlank(null) = fals ...

  2. Docker理解与使用(转)

    2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文就来详细解释,帮助大家理解它,还带有简单 ...

  3. CodeForces - 9B - Running Student

    先上题目: B. Running Student time limit per test 1 second memory limit per test 64 megabytes   And again ...

  4. asp.net--OnAuthorization方法

    我看别人可以通过这个方法中的 Context.Request.Headers.Authorization对象来调取对象来使用,可是我通过实验尝试不出来,真不知道为什么,这儿留个坑吧 别人的 我的

  5. [bzoj2259][Oibh]新型计算机_Dijkstra

    新型计算机 bzoj-2259 Oibh 题目大意:给定一个n个数的数列,第i个数为a[i],更改第i个数至x的代价为|x-a[i]|.求最小代价,使得:读入一个数s1后,向后连着读s1个数,然后如s ...

  6. 洛谷——P1095 守望者的逃离

    https://www.luogu.org/problem/show?pid=1095#sub 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交 ...

  7. 洛谷 P2412 查单词

    P2412 查单词 题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西. 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个 ...

  8. iOS开发——远程消息推送的实现

    在我们使用App的过程中.总是会收到非常多的消息推送.今天我们就要来实现这个功能.首先消息推送分为本地消息推送和远程消息推送.而当中又以远程消息最为经常使用. 可是在推送远程消息之前.有两个前提条件. ...

  9. poj 3913(水)

    Description You have devised a new encryption technique which encodes a message by inserting between ...

  10. Python 3.x 判断 dict 是否包含某个键

    Python 3.x不再支持 has_key() 函数,而被__contains__('key')所替代,会返回bool,可以用其做判断. 代码示例: >>> user = 'dad ...