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文件的作用相关推荐

  1. Python模块包中__init__.py文件的作用(转载)

    用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文件太重要了 模块包: 包通常总是一个目录,目录下为首的一个文 ...

  2. python模块 init py_Python模块包中__init__.py文件的作用

    在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很 ...

  3. from import 导入时找不到module的解决办法(Python模块包中_init_.py文件的作用)

    文章目录 背景 正文 Ⅰ.报错信息 Ⅱ.问题解决 Ⅲ.问题分析 Ⅳ._init_.py文件作用 背景 最近在使用Pycharm开发python脚本时,遇到这样一个现象:打开别人给的工程,环境配置都没有 ...

  4. python包的init文件_Python模块包中__init__.py文件功能分析

    本文实例讲述了Python模块包中__init__.py文件功能.分享给大家供大家参考,具体如下: 用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的 ...

  5. Python包中__init__.py文件的作用和用法

    在Python工程中,我们经常可以看到带有"__init__.py"文件的目录,在PyCharm中,带有这个文件的目录被认为是Python的包目录,与目录的图标有不一样的显示.如下 ...

  6. python中__init__文件的运用_python中__init__.py文件的作用

    1.很多地方的文件夹都有__init__.py.网上一般都说,有了这个东西会把它当作一个包,否则import这个文件夹会出错. 但这就好像和说python文件中如果有中文就要在开头写 # coding ...

  7. Python3中__init__.py文件介绍

          Python中的模块是包含Python定义和语句的文件(A module is a file containing Python definitions and statements),其 ...

  8. init自定义python_Python自定义Module中__init__.py文件介绍

    ./pyModuleTest/ ├── addutil │   ├── add.py │   ├── add.pyc │   ├── __init__.py │   ├── __init__.pyc ...

  9. Python包和__init__.py文件

    在eclipse中用pydev开发python脚本时,当新建一个package时,系统会自动地生成一个空的__init__.py文件.如果把这个文件删掉,那么你会发现包图标自动变为文件夹图标.这是怎么 ...

最新文章

  1. SearchRequestBuilder常用方法说明
  2. 我去字节跳动面试,“偷”回来的面试题,题真难...
  3. 人工智能中图神经网络GNN是什么?
  4. SAP SD 关于信用管理--信用更新
  5. fiddler自动响应AutoResponder之正则匹配Rule Editor
  6. python魔法方法详解
  7. nginx 常用优化
  8. 用script实现Web Service的异步调用
  9. matplotlib——直方图
  10. wincc中c语言做变量自增,在WinCC中如何利用C动作实现变量自动加1-工业支持中心-西门子中国...
  11. 大连计算机类书店小结
  12. 周育如的音标口诀大全_一年级汉语音标口诀记忆方法
  13. (随笔)区块链是什么??
  14. 计算机没有有效的ip配置,win7电脑没有有效的ip配置怎么办
  15. 智能流程机器人助你“聚划算”
  16. 一文搞懂人脸识别那点事---人脸识别方案summary
  17. securecrt 不掉线_如何不掉线
  18. 【内网穿透服务器】使用Frp外网访问内网FTP服务器(以访问内网samba服务为例)
  19. 手用计算机电池,二手电脑器材中的电池问题
  20. 深圳大数据学习:泛型 --【千锋】

热门文章

  1. Boosting和Bagging: 如何开发一个鲁棒的机器学习算法
  2. 人脸识别市场广 离不开政策支持及市场强劲需求
  3. AI综述专栏 | 基于深度学习的目标检测算法综述
  4. 第三次AI寒冬即将来袭?
  5. 与跨国巨头合作,做羊还是做狼? --- 我看SAP取消HAND合作伙伴资格
  6. 图灵测试,时至今日还有意义吗?
  7. AI与人类围棋士的差距到底有多大?
  8. 2019年人工智能行业现状与发展趋势报告
  9. 测试归测试,自动驾驶向个人全面开放依然长路漫漫
  10. 2018 中国开源年度报告发布,阿里系独占鳌头