包和模块

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

  1. python导入py文件-Python导入其他文件中的.py文件 即模块

    python中__init__.py文件的作用 问题 在执行models.py时,报ImportError:No module named transwarp.db的错误,但明明transwarp下就 ...

  2. python多个for的执行顺序-python顺序执行多个py文件

    假如我要执行code目录下的python程序,假设该目录下有1.py,2.py,3.py,4.py四个文件,但是我想执行1.py,2.py,4.py,则可在该目录下创建一个python文件,代码如下: ...

  3. mac系统python写文件_Mac中py文件转为.command文件,双击运行

    有的时候我们写好的python 脚本需要给别人使用,但是如果对方不是很懂程序语言,这个时候,我们就可以将py文件修改后缀为comand的文件,并在py文件的第一行要添加#!/Usr/bin/env p ...

  4. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  5. python如何调用另一个py文件的所有函数

    在工程大的时候,可能会有这样的困惑,python如何调用另一个py文件的所有函数呢? 分成两种情况,1·在同一个文件夹下的调用 2·不在一个文件夹下的相互调用. 1·在同一个文件夹下 调用函数: A. ...

  6. Python如何引用另一个py文件中的变量

    Python如何引用另一个py文件中的变量 1.新建一个aa.py文件 2.新建一个bb.py文件 将变量和函数功能分开保存,这样可以简化自己的代码,看起来更简洁也便于维护,今天需要用到录入很多多维l ...

  7. 【python学习总结2】.py文件转化为.exe文件

    1.pyInstaller安装配置: 如果安装了pip,直接用Windows的"命令提示符(管理员)"(菜单右键)打开cmd命令行窗口,输入pip  install pyinsta ...

  8. 如何把.ipynb文件转化为.py文件

    第一种方法是: 在.ipynb 文件所在的目录下打开一个终端,然后输入: jupyter nbconvert --to script *.ipynb 就能把当前文件夹下面的所有的.ipynb文件转化为 ...

  9. pyinstaller打包venv(虚拟环境),.pyd文件,非.py文件打包

    pyinstaller打包venv(虚拟环境),.pyd文件,非.py文件打包 1 首先pyinstaller不会使用venv中的包,请先进入虚拟环境,然后再使用 pyinstaller xxx.py ...

最新文章

  1. 【笔记】MAC上使用onedrive遇到的问题及解决方法
  2. Python中的and和or
  3. flask貌似html文件里只能用flask指定的路径格式,css文件里则可用相对路径
  4. maven引用公共包_Maven项目怎样引用其他项目/或者jar包-阿里云开发者社区
  5. LOJ 2979 「THUSCH 2017」换桌——多路增广费用流
  6. java ee 导入项目_最代码网站java项目下载后遇到项目打开,导入,运行的问题QA汇总...
  7. 招生 | 上海交通大学人工智能课题组招收博士生
  8. Java小白学习指南【day43】---Linux
  9. X-Scan-v3.3 漏洞扫描工具使用
  10. i.mx536 linux视频录制,linux mint 18.3下录制网站上的视频与声音的软件 vokoscreen 安装与使用...
  11. 机械制图与计算机绘图习题集第二版答案,机械制图与计算机绘图习题集(第2版)-曾令宜.pdf...
  12. 电子技术背后的数学本质【2】(反馈电路的分析和运算放大器)
  13. C语言之“输出100~200之间的素数”
  14. Tomcat 运行 maven项目报错 com.sun.faces.config.ConfigureListener
  15. Lombok介绍、使用方法和总结
  16. Vue组件——数字滚动抽奖效果
  17. 中国互联网的沧海桑田
  18. SSM人才交流平台的开发毕业设计-附源码
  19. 新版Chrome自动禁用第三方插件的解决办法[转]
  20. 【LeetCode算法 - JAVA】6.Z字形变换

热门文章

  1. 复旦大学自然语言处理实验室发布模型鲁棒性评测平台TextFlint
  2. GitHub 又一开源神器!写代码、搜问题,全部都在「终端」完成!
  3. 又一位!26岁当上985博导,这才是乘风破浪的姐姐!
  4. 被拒稿、被否定:读博五年间都没有发 paper 是一种怎样的体验?
  5. CVPR 2020 Oral | 旷视研究院提出Circle Loss,革新深度特征学习范式
  6. 2019年9月全国程序员工资统计,看看你拖后腿了没?
  7. 【每日一念经】四轮面试,我如何拿到美团的offer?
  8. 汇编语言 执行push和执行pop区别 栈顶的变化范围
  9. 链表问题1——打印两个有序链表的公共部分
  10. asp.net 页面中点击按钮后无反应的解决方法