<转>Python: __init__.py 用法

转自 http://www.cnblogs.com/BeginMan/p/3183629.html

python的每个模块的包中,都有一个__init__.py文件,有了这个文件,我们才能导入这个目录下的module。

那么,__init__.py还有什么别的功能呢?

其实,__init__.py里面还是可以有内容的,我们在导入一个包时,实际上导入了它的__init__.py文件。

我们可以再__init__.py文件中再导入其他的包,或者模块。

[python]

import readers

import writers

import commands

import users

import meta

import auth

import admin

这样,当我们导入这个包的时候,__init__.py文件自动运行。帮我们导入了这么多个模块,我们就不需要将所有的import语句写在一个文件里了,也可以减少代码量。

不需要一个个去导入module了。

__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:

from PackageName import *

这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:

#文件 __init__.py

__all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]

如:在一个包里有foo.py、__init__.py

#__init__.py
import os
import datetime
#foo.py
from __init__ import *
print datetime.datetime.now()

则输出:2013-07-11 11:34:41.250000

时间: 2024-10-01 10:54:18

<转>Python: __init__.py 用法的相关文章

Python的__init__.py用法

python中包的引入,对于大型项目中都会使用到这个功能,把实现不同功能的python文件放在一起,组成不同lib库,然后在其他地方调用. 1.__init__.py基本介绍 首先看下面这个例子 例子1 #!/usr/bin/env python2.7 #-*- coding:utf-8 -*- from package.src.test import A a = A(2) a.aPrint() 从package包中的src子包中test.py文件中,引入A类,如何实现这一点?? 需要构建如下的

python __init__.py用途

转自http://www.cnpythoner.com/post/2.html Python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的.py文件所在的目录,然后import.这样的做法,对于少数文件是可行的,但如果程序数目很 多,层级很复杂,就很吃力了.有没有办法,像Java的Package一样,将多个.py文件组织起来,以便在外部统一调用,和在内部互

python __init__.py

python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的.py文件所在的目录,然后import.这样的做法,对于少数文件是可行的,但如果程序数目很 多,层级很复杂,就很吃力了.有没有办法,像Java的Package一样,将多个.py文件组织起来,以便在外部统一调用,和在内部互相调用呢?答案是有的.主要是用到python的包的概念,python __ini

python __init__.py和__all__

__init__.py是创建python包时用的,详见文章:http://www.cnblogs.com/tqsummer/archive/2011/01/24/1943273.html python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的.py文件所在的目录,然后import.这样的做法,对于少数文件是可行的,但如果程序数目很 多,层级很复杂,就很

Python __init__.py 作用详解

__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件. 通常__init__.py 文件为空,但是我们还可以为它增加其他的功能.我们在导入一个包时,实际上是导入了它的__init__.py文件.这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入. # package # __init__.py import re import urllib import sys impo

Python __init__.py文件的作用

我们经常在python的模块目录中会看到 "__init__.py"  这个文件,那么它到底有什么作用呢? 1. 模块包(module package)标识 如果你是使用python的相关IDE来进行开发,那么如果目录中存在该文件,该目录就会被识别为 module package . 2. 控制导包范围 假设我们的模块包的目录结构如下: . └── mypackage ├── subpackage_1 │   ├── test11.py │   └── test12.py ├── su

python __init__.py 文件的作用

__init__.py:python2中要导入其他文件需要加上init这个文件:python3中不需要 通常我们从当前包导入 module1 模块:from 文件夹 import xx文件,可以导入成功,但是若from 文件夹 import 模块的话,想要.出来所导入模块内的方法.变量等就会报错:这时我们需要建一个__init__.py的文件,写入: # 从当前文件夹导入指定模块 from . import 模块名 # 从.模块名 导入所有成员到包中 from .模块名 import * 原文地

转载 - Python里面关于 模块 和 包 和 __init__.py 的一些事

出处:http://www.cnblogs.com/tqsummer/archive/2011/01/24/1943273.html python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的.py文件所在的目录,然后import.这样的做法,对于少数文件是可行的,但如果程序数目很 多,层级很复杂,就很吃力了.有没有办法,像Java的Package一样,将

关于python 的__init__.py 以及 __all__ 的用法

1.在使用PyCharm新建python package时,会发现生成的包里,有__init__.py 这个文件,而且这文件是空的. 既然是空的?那删了吧! 删了就悲剧咯,这货算是package的一个标识,IDE就是通过它来判断package的. 当然,它还有另外一个作用,暂且不提它,先说说__all__. 2.Python中的包和模块有两种导入方式:精确导入和模糊导入 以上图为例,精准导入,假如A.py里有函数A1(),A2(). 此时B.py需要引用它们,可以如下: from hello.A