文档章节

python中__init__.py是干什么的

Faye_Cai
 Faye_Cai
发布于 2016/05/12 17:02
字数 324
阅读 12
收藏 0

转自: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

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

共有 人打赏支持
Faye_Cai
粉丝 0
博文 28
码字总数 5590
作品 0
海淀
高级程序员
自定义的python目录和文件 import 找不到路径的解决办法

+++++ 项目背景++++++++++++++++++++++++++++++++++++ scavenger.py中有一个通用的方法getList,为了没管和复用,新建目录common和文件toolutil.py 将函数写入: 新建目录 和文件 : common...

王二铁
2013/12/29
0
0
使用 python 扩展 emacs

Pymacs 可以使得emacs能和python程序进行交互,可以让emacs插件开发者尽量使用python进行开发。这里提供一个例子,在lisp中调用python的函数并将当前buffer的文件名传递给python,在emacs中输...

ChanningBJ
2014/05/11
0
0
python基础name&direction

some problem in python 1. main & name 有人一句话概括了这段代码的意义: ”Make a script both importable and executable“ 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该...

habits
2017/08/01
0
0
学习笔记(11月09日)--import&datetime

四周四次课(11月9日) 在日常的开发工作中,我们要写很多的python代码,如果都写在一个文件中,会导致代码特别难维护,为了拓展代码的可维护性,我们把函写在不同的文件里,这样每个文件包含...

wanyang_wanyang
07/03
0
0
【原创】研究Tribler过程中遇到的Python相关问题总结

【如何导入包】 两点搞定,就可以import了: package的当前目录下要有init.py文件,表示它自己是个package package的parent目录要在PYTHONPATH中 【打开文件的路径和导入模块的路径】 打开文件...

摩云飞
2012/10/23
0
1

没有更多内容

加载失败,请刷新页面

加载更多

白话SpringCloud | 第五章:服务容错保护(Hystrix)

前言 前一章节,我们知道了如何利用RestTemplate+Ribbon和Feign的方式进行服务的调用。在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如网...

oKong
20分钟前
0
0
【解惑】领略Java内部类的“内部”

内部类有两种情况: (1) 在类中定义一个类(私有内部类,静态内部类) (2) 在方法中定义一个类(局部内部类,匿名内部类) 1、私有内部类 —— 在方法之间定义的内部类,非静态 我们首先看看类中...

偶尔诗文
今天
1
0
sqlserver 2008 r2 直接下载地址(百度云)

之前下载的sqlserver2008发现不能附加,就卸载了,重新找到了sqlserver2008R2的百度云资源 卸载sqlserver2008还是有点麻烦,不过就是需要删除注册表中的信息 自己来回卸载了3次终于重装sqlse...

dillonxiao
今天
1
0
[Java]JVM调优总结 -Xms -Xmx -Xmn -Xss

JVM调优总结 -Xms -Xmx -Xmn -Xss 博客分类: Java General JVM应用服务器电信CMS算法 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可...

morpheusWB
今天
2
0
C++ std::function 和 std::bind

C++11提供了std::function和std::bind两个工具,用于引用可调用对象。这些可调用对象包括 普通函数,Lambda表达式,类的静态成员函数,非静态成员函数以及仿函数等。引用可调用对象,可以用于...

yepanl
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部