python init文件作用___init__.py 文件的作用
包和模块
包(package)是一个文件夹,它里面会有一个__init__.py,还有我们自己定义的.py文件。
而我们自己定义的.py文件,python中称为模块(module),一个模块就是一个py文件,里面封装了一个功能模块,可能有函数、类、变量等。
如下建立的一个代码结构:classdemo/
├── animals
│ ├── animal2.py
│ ├── animal.py
│ ├── __init__.py
│ ├── manager2.py
│ └── manager.py
└── search
├── binarytree_level.py
└── __init__.py
里面包括两个package,一个为animals包,另一个为search包. 每个package里都有一个__init__.py文件。
使用这种结构带来什么便利?每个模块间的变量又该如何引用?里面的__init__.py起到什么作用?下面一一解答。
__init__.py 作用
如上所述,__init__.py会使得普通的文件夹变为package. 实际上,__init__.py也是一个模块,其名称正是package的名字。
一般来说此文件为空,如下导入animals包:In [2]: import animals
In [3]: animals
Out[3]:
可以看到导入animals包实际上导入了它下面的__init__.py文件。
同时还可以为它增加其他功能。
因为在导入一个包时实际上导入它的__init__.py文件,利用此特性,可以在__init__.py文件中批量导入多个模块都在公用的模块,而不再需要一个一个的导入。
拿上面的demo来说,manager.py和manager2.py中都用到time模块,我们就其移动到__init__.py里:# __init__.py
import time
import os
import sys
import abc
在使用这些内置等模块时,首先导入包:import animals # 导入包
在调用time模块时,必须使用包名+模块名的方式引用:def recordTime(self):
#引用变为:包名animals + 模块名称
self.__t = animals.time.time()
print('feeding time for %s is %.0f'%(self.animal.name,self.__t))
self.animal.getSpeedBehavior()__init__.py文件还有一个功能,通过设置__all__列表,指定导出的变量、函数,只有在__all__列表里的变量才能被其他模块所引用。
python init文件作用___init__.py 文件的作用相关推荐
- python导入py文件-Python导入其他文件中的.py文件 即模块
python中__init__.py文件的作用 问题 在执行models.py时,报ImportError:No module named transwarp.db的错误,但明明transwarp下就 ...
- python多个for的执行顺序-python顺序执行多个py文件
假如我要执行code目录下的python程序,假设该目录下有1.py,2.py,3.py,4.py四个文件,但是我想执行1.py,2.py,4.py,则可在该目录下创建一个python文件,代码如下: ...
- mac系统python写文件_Mac中py文件转为.command文件,双击运行
有的时候我们写好的python 脚本需要给别人使用,但是如果对方不是很懂程序语言,这个时候,我们就可以将py文件修改后缀为comand的文件,并在py文件的第一行要添加#!/Usr/bin/env p ...
- Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子
Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...
- python如何调用另一个py文件的所有函数
在工程大的时候,可能会有这样的困惑,python如何调用另一个py文件的所有函数呢? 分成两种情况,1·在同一个文件夹下的调用 2·不在一个文件夹下的相互调用. 1·在同一个文件夹下 调用函数: A. ...
- Python如何引用另一个py文件中的变量
Python如何引用另一个py文件中的变量 1.新建一个aa.py文件 2.新建一个bb.py文件 将变量和函数功能分开保存,这样可以简化自己的代码,看起来更简洁也便于维护,今天需要用到录入很多多维l ...
- 【python学习总结2】.py文件转化为.exe文件
1.pyInstaller安装配置: 如果安装了pip,直接用Windows的"命令提示符(管理员)"(菜单右键)打开cmd命令行窗口,输入pip install pyinsta ...
- 如何把.ipynb文件转化为.py文件
第一种方法是: 在.ipynb 文件所在的目录下打开一个终端,然后输入: jupyter nbconvert --to script *.ipynb 就能把当前文件夹下面的所有的.ipynb文件转化为 ...
- pyinstaller打包venv(虚拟环境),.pyd文件,非.py文件打包
pyinstaller打包venv(虚拟环境),.pyd文件,非.py文件打包 1 首先pyinstaller不会使用venv中的包,请先进入虚拟环境,然后再使用 pyinstaller xxx.py ...
最新文章
- 【笔记】MAC上使用onedrive遇到的问题及解决方法
- Python中的and和or
- flask貌似html文件里只能用flask指定的路径格式,css文件里则可用相对路径
- maven引用公共包_Maven项目怎样引用其他项目/或者jar包-阿里云开发者社区
- LOJ 2979 「THUSCH 2017」换桌——多路增广费用流
- java ee 导入项目_最代码网站java项目下载后遇到项目打开,导入,运行的问题QA汇总...
- 招生 | 上海交通大学人工智能课题组招收博士生
- Java小白学习指南【day43】---Linux
- X-Scan-v3.3 漏洞扫描工具使用
- i.mx536 linux视频录制,linux mint 18.3下录制网站上的视频与声音的软件 vokoscreen 安装与使用...
- 机械制图与计算机绘图习题集第二版答案,机械制图与计算机绘图习题集(第2版)-曾令宜.pdf...
- 电子技术背后的数学本质【2】(反馈电路的分析和运算放大器)
- C语言之“输出100~200之间的素数”
- Tomcat 运行 maven项目报错 com.sun.faces.config.ConfigureListener
- Lombok介绍、使用方法和总结
- Vue组件——数字滚动抽奖效果
- 中国互联网的沧海桑田
- SSM人才交流平台的开发毕业设计-附源码
- 新版Chrome自动禁用第三方插件的解决办法[转]
- 【LeetCode算法 - JAVA】6.Z字形变换
热门文章
- 复旦大学自然语言处理实验室发布模型鲁棒性评测平台TextFlint
- GitHub 又一开源神器!写代码、搜问题,全部都在「终端」完成!
- 又一位!26岁当上985博导,这才是乘风破浪的姐姐!
- 被拒稿、被否定:读博五年间都没有发 paper 是一种怎样的体验?
- CVPR 2020 Oral | 旷视研究院提出Circle Loss,革新深度特征学习范式
- 2019年9月全国程序员工资统计,看看你拖后腿了没?
- 【每日一念经】四轮面试,我如何拿到美团的offer?
- 汇编语言 执行push和执行pop区别 栈顶的变化范围
- 链表问题1——打印两个有序链表的公共部分
- asp.net 页面中点击按钮后无反应的解决方法