Python模块包中__init__.py文件的作用(转载)
用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文件太重要了
模块包:
包通常总是一个目录,目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。差不多就像这样吧:
Package1/ __init__.py Module1.py Module2.py Package2/ __init__.py Module1.py Module2.py
我们可以就这样导入一个包:
import Package1
或者调入一个子模块和子包:
from Package1 import Module1from Package1 import Package2import Packag1.Module1import Packag1.Package2
可以深入好几层包结构:
from Package1.Package2 import Module1import Package1.Package2.Module1
大致就这样吧,我觉得,包的精髓应该是在 __init__.py 这个文件之中的。
__init__.py 文件:
__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。
>>> import Package1>>> Package1.Module1Traceback (most recent call last): File "<pyshell#1>", line 1, in ? Package1.Module1AttributeError: 'module' object has no attribute 'Module1'
我们需要在 __init__.py 里把 Module1 预先导入:
#文件 __init__.pyimport Module1
测试:
>>> import Package1>>> Package1.Module1<module 'Package1.Module1' from 'Module.pyc'>
__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
from PackageName import *
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
#文件 __init__.py__all__ = ['Module1', 'Module2', 'Package2']
测试:
>>> from Package1 import *>>> Module2<module 'Package1.Module2' from 'Module.pyc'>
__init__.py 文件会在导入时被执行。
转载于:https://www.cnblogs.com/licheng/archive/2010/12/06/1897426.html
Python模块包中__init__.py文件的作用(转载)相关推荐
- Python模块包中__init__.py文件的作用
2019独角兽企业重金招聘Python工程师标准>>> 在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自 ...
- python模块 init py_Python模块包中__init__.py文件的作用
在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很 ...
- from import 导入时找不到module的解决办法(Python模块包中_init_.py文件的作用)
文章目录 背景 正文 Ⅰ.报错信息 Ⅱ.问题解决 Ⅲ.问题分析 Ⅳ._init_.py文件作用 背景 最近在使用Pycharm开发python脚本时,遇到这样一个现象:打开别人给的工程,环境配置都没有 ...
- python包的init文件_Python模块包中__init__.py文件功能分析
本文实例讲述了Python模块包中__init__.py文件功能.分享给大家供大家参考,具体如下: 用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的 ...
- Python包中__init__.py文件的作用和用法
在Python工程中,我们经常可以看到带有"__init__.py"文件的目录,在PyCharm中,带有这个文件的目录被认为是Python的包目录,与目录的图标有不一样的显示.如下 ...
- python中__init__文件的运用_python中__init__.py文件的作用
1.很多地方的文件夹都有__init__.py.网上一般都说,有了这个东西会把它当作一个包,否则import这个文件夹会出错. 但这就好像和说python文件中如果有中文就要在开头写 # coding ...
- Python3中__init__.py文件介绍
Python中的模块是包含Python定义和语句的文件(A module is a file containing Python definitions and statements),其 ...
- init自定义python_Python自定义Module中__init__.py文件介绍
./pyModuleTest/ ├── addutil │ ├── add.py │ ├── add.pyc │ ├── __init__.py │ ├── __init__.pyc ...
- Python包和__init__.py文件
在eclipse中用pydev开发python脚本时,当新建一个package时,系统会自动地生成一个空的__init__.py文件.如果把这个文件删掉,那么你会发现包图标自动变为文件夹图标.这是怎么 ...
最新文章
- 老板问:多长时间搞定?开发说3天,測试说2天,然后……
- Java的13个规范
- 【专访】PP租车张丙军:“打虎亲兄弟“,好团队才能书写互联网传奇
- OpenCV常见的优化方法和技巧总结
- servlet中显示mysql字段_Java Servlet:从数据库获取信息并在屏幕上显示它
- 程序员一人对接四人郁闷吐槽:轮流指挥,只有我从天亮忙到天黑
- Windows下创建并运行.sh文件
- 纯新手DSP编程--5.18--调试(续)
- Learn UML with JUDE(中文版)
- Java程序设计基础思维导图
- Ueditor编辑器 .Net 版
- table表格固定表头
- parasolid 原因 效率_SolidWorks、creo、UG哪个更适合机械设计?听听行业大咖怎么说...
- nginx + tomcat 504 解决方案
- html采集插件如何用,火车采集器插件功能详解
- 奇点云数据中台技术汇(四)| DataSimba系列之流式计算
- 几种常见的光纤接头(ST,SC,LC,FC)以及PC、APC和UPC的区别
- 使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱
- PHP将word文件转为图片预览
- Dell 灵越7370 装机过程遇到硬盘枷锁 bitlocker锁解决方法
热门文章
- android:descendantFocusability用法简析
- android volatile的使用
- taskAffinity(Activity默认Application,Application默认包名,Task默认根Activity) singleInstance放入新栈
- bdbus_lxb下载
- WebKit 内核源码分析 (四)
- linux 主目录 配置文件
- JavaScriptCore API 和V8 API
- SpringIOC的依耐注入DI---set注入---constructor有参构造注入---了解P命名空间---了解SpEL
- MacOs桌面自动被打乱的原因
- 学院-读书:影响世界的100本书