文档章节

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

疯子张
 疯子张
发布于 2014/12/31 14:19
字数 204
阅读 5123
收藏 2
点赞 0
评论 0

Package1/ __init__.py    Module1.py    Module2.py    Package2/ __init__.py       Module1.py       Module2.py 

我们可以就这样导入一个包: 

from Package1 import Module1

from Package1 import Package2

import Packag1.Module1

import Packag1.Package2 

__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。

>>> import Package1

>>> Package1.Module1

Traceback (most recent call last):

 File "<pyshell#1>", line 1, in ? 

 Package1.Module1AttributeError: 'module' object has no attribute 'Module1' 

我们需要在 __init__.py 里把 Module1 预先导入:

#文件 __init__.py

     import 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'] 




© 著作权归作者所有

共有 人打赏支持
疯子张
粉丝 3
博文 80
码字总数 20167
作品 0
海淀
python 入门笔记 (模块)

一、模块基础 1、模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。实际的角度,模块往往对应Python程序文件。 每个文件...

QEfarmer
2015/04/03
0
1
Python __init__.py 作用详解

原文地址:https://www.cnblogs.com/Lands-ljk/p/5880483.html init.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有init.py 文件。 通常init.py 文件为空,但是...

oldpan
2017/11/26
0
0
学习笔记(11月09日)--import&datetime

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

wanyang_wanyang
07/03
0
0
Python : __init__.py的作用

一、init.py的作用: 在使用PyDev插件,在Eclipse创建package时,会自动在package所在的目录自动创建一个init.py文件,且文件内容为空。这个文件有什么有呢? init.py的作用有如下几点: 1....

cloud-coder
2014/02/19
0
0
【原创】研究Tribler过程中遇到的Python相关问题总结

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

摩云飞
2012/10/23
0
1
使用 python 扩展 emacs

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

ChanningBJ
2014/05/11
0
0
如何简单地理解Python中的if __name__ == '__main__'

摘要 通俗的理解:假如你叫小明.py,在朋友眼中,你是小明;在你自己眼中,你是你自己。 的意思是:当.py文件被直接运行时,之下的代码块将被运行;当.py文件以模块形式被导入时,之下的代码...

火力全開
07/11
0
0
python中 __name__的作用

python中if name == 'main': 的解析 当你打开一个.py文件时,经常会在代码的最下面看到if name == 'main':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 name。一...

剑影是绰号
2013/07/08
0
1
python 在不同层级目录import 模块的方法

使用python进行程序编写时,经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入。不过如果是自己遍写的依赖包,又...

329984300
07/03
0
0
python中if __name__ == '__main__': 的解析

当你打开一个.py文件时,经常会在代码的最下面看到if name == 'main':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 name。一个模块的 name 的值取决于您如何应用...

329984300
07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git 基础 - 远程仓库的使用

远程仓库的使用 要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库。远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某...

谢思华
6分钟前
0
0
面试宝典-悲观锁和乐观锁

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。 乐观锁(Optimistic...

suyain
7分钟前
0
0
崛起于Springboot2.X之集成MongoDb使用mongoTemplate CRUD(27)

1、pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency><dependency> <groupId>log4j</......

木九天
18分钟前
0
0
切分log日志

新建logback.xml放到resource里面 <?xml version="1.0" encoding="utf-8"?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <......

talen
23分钟前
0
0
spring @Resource 和 @Autowired 的使用区别

这两个 注解 @Resource 和 @Autowired , 常识都知道 @Resource 是 JAVAEE 自带的,@Autowired 是 spring 的自定义注解。 一般情况下, 使用 bean的时候, 这两个注解 随便使用一个即可。 但...

之渊
28分钟前
0
0
springboot集成elasticsearch客户端问题记录

1背景说明 服务端ES版本为5.5.2,springboot版本为1.5.6。 工程中添加如下依赖 2问题记录 2.1 NetworkPlugin类找不到 报错java.lang.ClassNotFoundException: org.elasticsearch.plugins.Net...

zjg23
30分钟前
1
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
30分钟前
0
0
Java构造器使用注意

public class 父类A {int age = 10;protected void say() {System.out.println("父类A");}public 父类A() {override();}public void override() {Syst...

咸鱼AI
30分钟前
0
0
TensorFlow 线性分类

构造直线 z = 2 * x - 3 * y + 4 x0*w0+x1*w1+b=0 x1=-x0* w0/w1-b/w1 斜率 k= -w0/w1 截距 -b/w1 随机生成数据,加入一定的偏差,用直线将二维平面分为两部分 使用线性模型拟合参数 损失函数...

阿豪boy
33分钟前
0
0
翻译冒泡排序测试

翻译一个冒泡排序: var a = [1,3,2,4,6,5];var f = 0;var n = a.length ;for( var i =1; i<= n; i++) { for( var j = n-1 ; j >= i; j --) { if(a[j] < a[j+1]) { ......

钟元OSS
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部