Python模块包中__init__.py文件的作用
2019独角兽企业重金招聘Python工程师标准>>>
在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很不了解这个空文件的作用是什么,因为没有什么东西可写在这里,所以我直接把这个文件给删掉了,结果我的包图标自动变为文件夹图标了,这是怎么回事呢!
原来在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml导入 dom )的时候,实际上导入了它的 __init__.py 文件。
一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。
_init__.py 文件:
__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。
>>> import Package1 >>> Package1.Module1 Traceback (most recent call last):File "D:/Work Space/Python practice/MyPractice/src/test.py", line 8, in <module>aa=Package1.Module1 AttributeError: 'module' object has no attribute 'Module1'
我们需要在 __init__.py 里把 Module1 预先导入:
#文件 __init__.py import Module1
测试:
>>> import Package1 >>> aa=Package1.Module1 >>> print aa
__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
from PackageName import *
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
#文件 __init__.py __all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]
测试:
>>> from Package1 import *
>>>
test1111111111111111111111
test222222
__init__.py 文件会在导入时被执行。
转载于:https://my.oschina.net/sharesuiyue/blog/792641
Python模块包中__init__.py文件的作用相关推荐
- Python模块包中__init__.py文件的作用(转载)
用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文件太重要了 模块包: 包通常总是一个目录,目录下为首的一个文 ...
- 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文件.如果把这个文件删掉,那么你会发现包图标自动变为文件夹图标.这是怎么 ...
最新文章
- SearchRequestBuilder常用方法说明
- 我去字节跳动面试,“偷”回来的面试题,题真难...
- 人工智能中图神经网络GNN是什么?
- SAP SD 关于信用管理--信用更新
- fiddler自动响应AutoResponder之正则匹配Rule Editor
- python魔法方法详解
- nginx 常用优化
- 用script实现Web Service的异步调用
- matplotlib——直方图
- wincc中c语言做变量自增,在WinCC中如何利用C动作实现变量自动加1-工业支持中心-西门子中国...
- 大连计算机类书店小结
- 周育如的音标口诀大全_一年级汉语音标口诀记忆方法
- (随笔)区块链是什么??
- 计算机没有有效的ip配置,win7电脑没有有效的ip配置怎么办
- 智能流程机器人助你“聚划算”
- 一文搞懂人脸识别那点事---人脸识别方案summary
- securecrt 不掉线_如何不掉线
- 【内网穿透服务器】使用Frp外网访问内网FTP服务器(以访问内网samba服务为例)
- 手用计算机电池,二手电脑器材中的电池问题
- 深圳大数据学习:泛型 --【千锋】