Python中package的导入语法
在Python中,一个目录被称为一个package。import和from语法除了导入module文件之外,还可以导入package,语法如下:
# import语法
import dir1.dir2.mod #from语法
from dir1.dir2.mod import x
上面的导入语句中,.用来分割目录和文件名,上面导入的目录结构为dir1/dir2/mod.py。当然,也可以只导入目录:
import dir1 import dir1.dir2 from dir1 import dir2
搜寻
在以目录的方式导入的时,必须注意,在sys.path提供的路径中,必须存在一个路径,这个路径拼接上导入的路径,是实际存在的。比如sys.path中存在一个路径为:/home/username/python,那么这个路径拼接上dir1/dir2/mod.py,即/home/username/python/dir1/dir2/mod.py必须实际存在,否则导入失败。
__init__.py
要导入一个package,除了要满足上述的搜寻条件,还必须为导入的每一个目录,添加一个名为__init__.py的文件,这个文件可以是空的(实际使用中,大部分都是如此),也可以包含代码,在首次导入(并不是每次执行)这个目录时,会执行__init__.py中的代码。导入的每一目录,最终在Python中都实现成为一个module对象,而在__init__.py中赋值的变量和函数,都成为相应module对象的属性,比如dir2中的__init__.py代码如下:
X = 999 def test():
print("dir2")
那么导入dir2之后,可以看到:
>>>dir2.X
999 >>>dir2.test()
dir2
reload
和module文件一样,package目录也支持reload:
reload(dir1) reload(dir1.dir2)
Python中package的导入语法的更多相关文章
- Python中的相对导入语法
Python中支持相对导入语法,即可以相对于某一个package进行导入,具体语法如下: # 导入"./dir2/spam.py", .表示当前目录 from .dir2 impo ...
- python中根据字符串导入模块module
python中根据字符串导入模块module 需要导入importlib,使用其中的import_module方法 import importlib modname = 'datetime' date ...
- 导模块的细节:(跨文件导入模块 &模块的两种执行方式) | 包的概念与使用 | 包中的相对导入语法
今日内容 包: 1. 导入模块的细节 2. 包的概念与使用 3. 包中的相对导入语法 跨文件夹导入模块 1. 假设有一个文件夹a ,a 的下面有一个ma 的模块,如果a文件夹所在目录在环境变量,a文件 ...
- 简单探讨python中的语句和语法
python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了,对象需要靠表达式建立处理,而表达式往往存在于语句 ...
- Python中import的as语法
在Python中,如果import的语句比较长,导致后续引用不方便,可以使用as语法,比如: import dir1.dir2.mod # 那么,后续对mod的引用,都必须是dir1.dir2.mod ...
- python中package机制的两种实现方式
当执行import module时,解释器会根据下面的搜索路径,搜索module1.py文件. 1) 当前工作目录 2) PYTHONPATH中的目录 3) Python安装目录 (/usr/loca ...
- 详解Python中的相对导入和绝对导入
Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的.包内导入即是包内的模块导入包内部的模块. Python import 的搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONP ...
- python中的绝对导入与相对导入,from __future__ import absolute_import的区别
相对导入:在不指明 package 名的情况下导入自己这个 package 的模块,比如一个 package 下有 a.py 和 b.py 两个文件,在 a.py 里 from . import b ...
- Python中一些糟糕的语法!你遇到过吗?还知道那些?
Python是一门语法优雅,功能强大,开发效率高,应用领域广泛的解释性语言. 其有非常多的优点,但是也并不是完美的,除了大家都知道的执行速度不够快,Python2和Python3的兼容问题,以及GIL ...
随机推荐
- 分布式网上商城项目- BeanDefinitionStoreException
BeanDefinitionStoreException: 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanDe ...
- JSP/Servlet开发——第七章 Servel基础
1.Servlet简介: ●Servlet是一个符合特定规范的 JAVA 程序 , 是一个基于JAVA技术的Web组件. ●Servlet允许在服务器端,由Servlet容器所管理,用于处理客户端请求 ...
- [转]MySQL常用字符串函数
本文转载自:http://www.cnblogs.com/geaozhang/ 是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用: 1.LOWER(column|str ...
- hadoop生态搭建(3节点)-11.storm配置
# http://archive.apache.org/dist/storm/apache-storm-1.1.0/ # ======================================= ...
- Python编程从入门到实践,个人笔记
3-9 晚餐嘉宾:在完场练习3-6时编写的程序之一中,使用len()打印一条消息,指出有多少位嘉宾来与你共进晚餐. 自己先写的程序如下: # coding=gbk #邀请一些人吃饭 per_list= ...
- Anaconda下的python如何写入环境变量中
Anaconda是一个非常好的python管理软件,实际使用起来要比直接用python自带的管理工具更好. 若需要将Anaconda下的python.exe添入环境变量中,需要如下设置 如上图所示,需 ...
- Python学习手册之正则表达式和元字符
在上一篇文章中,我们介绍了 Python 的数据封装.类方法.静态方法和属性函数,现在我们介绍 Python 的正则表达式和元字符.查看上一篇文章请点击:https://www.cnblogs.com ...
- Golang通道的无阻塞读写的方法示例
无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,但其实有些情况,我们并不想读数据或者写数据阻塞在那里,有1个唯一的解决办法,那就是使用select结构. 这篇文章会介绍,哪些情况会存在阻塞,以及如 ...
- json传值给前端页面,出现堆栈溢出问题
用的com.alibaba.fastjson.JSONObject这个包 原因:JSONObject将对象转json字符串时候没有关闭循环引用导致的堆栈溢出. 解决办法是 使用这个 JSONObjec ...
- A1092
可输入内容为0-9,a-z,A-Z. 输入: 第一行输入任意字符串: 第二行输入期望字符串. 输出: 如果第一行包含了所有期望字符串,输出yes和多余字符个数: 如果第一行不能完全包含期望字符串,输出 ...