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

  1. Python模块包中__init__.py文件的作用

    2019独角兽企业重金招聘Python工程师标准>>> 在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自 ...

  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. 老板问:多长时间搞定?开发说3天,測试说2天,然后……
  2. Java的13个规范
  3. 【专访】PP租车张丙军:“打虎亲兄弟“,好团队才能书写互联网传奇
  4. OpenCV常见的优化方法和技巧总结
  5. servlet中显示mysql字段_Java Servlet:从数据库获取信息并在屏幕上显示它
  6. 程序员一人对接四人郁闷吐槽:轮流指挥,只有我从天亮忙到天黑
  7. Windows下创建并运行.sh文件
  8. 纯新手DSP编程--5.18--调试(续)
  9. Learn UML with JUDE(中文版)
  10. Java程序设计基础思维导图
  11. Ueditor编辑器 .Net 版
  12. table表格固定表头
  13. parasolid 原因 效率_SolidWorks、creo、UG哪个更适合机械设计?听听行业大咖怎么说...
  14. nginx + tomcat 504 解决方案
  15. html采集插件如何用,火车采集器插件功能详解
  16. 奇点云数据中台技术汇(四)| DataSimba系列之流式计算
  17. 几种常见的光纤接头(ST,SC,LC,FC)以及PC、APC和UPC的区别
  18. 使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱
  19. PHP将word文件转为图片预览
  20. Dell 灵越7370 装机过程遇到硬盘枷锁 bitlocker锁解决方法

热门文章

  1. android:descendantFocusability用法简析
  2. android volatile的使用
  3. taskAffinity(Activity默认Application,Application默认包名,Task默认根Activity) singleInstance放入新栈
  4. bdbus_lxb下载
  5. WebKit 内核源码分析 (四)
  6. linux 主目录 配置文件
  7. JavaScriptCore API 和V8 API
  8. SpringIOC的依耐注入DI---set注入---constructor有参构造注入---了解P命名空间---了解SpEL
  9. MacOs桌面自动被打乱的原因
  10. 学院-读书:影响世界的100本书