python中__init__文件的运用_python中__init__.py文件的作用
1、很多地方的文件夹都有__init__.py。网上一般都说,有了这个东西会把它当作一个包,否则import这个文件夹会出错。
但这就好像和说python文件中如果有中文就要在开头写 # coding =utf8这句话一样,说话囫囵吞枣不带语境,导致误会新手。
2、实际上空的__init__.py文件在python3.3以上没有卵的必要。
如果用python3.3以上在__init__.py中写了内容,那要这个文件还差不多,否则来个空的__init__.py基本上是多此一举。就和在python3里面写# coding =utf8多此一举一样。
3、现在假设有这么一个目录,里面有:
一个名叫pac的文件夹(里面没有__init__.py文件)
一个pac.py的文件
一个run.py文件
在run.py里面写上 import pac,
3.1如果是python2,import pac实际上导入 的是pac.py,如果删除了pac.py那么就会报错,因为不能能import 一个文件夹,python2只能导入pac.py或者pac文件夹里面有__init__.py这种情况,类似的你写pac.txt pac.ppt,写个import pac也是不能导入的,不认他。
3.2如果是python3,那么import pac情况不一样,import pac到底导入的是个啥?
需要分很多种情况,一种是pac文件夹里面有__init__.py,一种是没有__init__.py,一种是连pac文件夹都没有,一种是你当前文件夹下还有一个叫pac.py的文件,一种是没这个pac.py的文件,这一下子就多了五种情况了。
3.2.1当写import pac时候,优先查找有没有pac文件夹里面有__init__.py的这个文件夹,如果找到了,那么此时的pac代表的是有__init__.py的pac文件夹(包)。
3.3.2如果3.2.1步骤没找到,那么再去查找有没有一个叫pac.py的文件,找到了那么 pac就代表pac.py了。
3.2.3如果连pac.py都没找到,就去找一个文件夹,这个文件夹不包含__init__.py,如果找到了这个文件夹,那么就会自动把这个文件夹当作包。
3.2.4如果执行3.2.3也没找到pac,那么就会报错了,ImportError: No module named pac
4.、总结一下,python2和python3的查找顺序差不多,但是python2少了3.2.3这一步,即如果只有pac文件夹,你就import pac那就会报错。
有__init__.py的包,叫做Regular packages ,常规包,python2只支持这个。
没有__init__.py的包,叫做Namespace package,命名空间包,python3.3以上支持这种。
Namespace package这个东西是在pep420里面新增的。
5、为了兼容python2和3,那就有必要写__init__.py;如果从不用python2,也不知道__init__.py里面可以写什么东西,只知道他是代表一个文件夹是一个包这一个作用的人,那就不需要有这个文件。
希望本文所述对大家程序设计有所帮助。
python中__init__文件的运用_python中__init__.py文件的作用相关推荐
- cmd执行python 环境变量应该怎么写_python怎么运行py文件?.py文件cmd命令方法及环境变量配置教程...
python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写.python在生物信息.统计.网页制作.计算等多个领域都体现出了强大的功能.python和其他脚本语言如java.R ...
- python撤回上一条命令_python 中执行上一句话,请教问题,怎么也才能使python执行完上一个命令,再执行下一条语句...
请教问题,怎么也才能使python执行完上一个命令,再执行下一条语句 正常的批处理文件执行完毕就2113会自动退出,连exit都不5261需要. 你是不是看见执行时4102窗口光标一闪一闪或者闪都不闪 ...
- Python基础_第3章_Python中的循环结构
Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...
- Python基础_第5章_Python中的数据序列
Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...
- python中模块是什么意思_Python中的模块是什么
一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include 引入math.h这个头文件,否则是无法正常进行调用的. 那么在Python中,如果 ...
- python文件打开后闪退_困扰已久的问题--python文件打开方式?为什么打开py文件会闪退!...
困扰已久的问题--python文件打开方式?为什么打开py文件会闪退! 当你安装好python时,你能够在python环境下写语句. python环境有两种措施敞开:第一种措施是找到并敞开python ...
- python的init有什么用_Python中 __init__.py的作用
我们经常在python的模块目录中会看到 "__init__.py" 这个文件,那么它到底有什么作用呢? 1. 标识该目录是一个python的模块包(module package ...
- python中的文件怎么处理_python 中有关文件处理
Python的文件处理 打开文件f = open ("path","mode") r 模式 以读的方式打开,定位到文件开头 , 默认的 mode.文件不存在直接 ...
- python中的main函数可以被其他文件调用么_Python中在脚本中引用其他文件函数的实现方法...
在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址.所以如果要在当前脚本引用其他文件,除了将文件放在和 ...
最新文章
- 解密 Redis 助力双 11 背后电商秒杀系统
- Docker火遍全球!Docker(Inc)这家公司却要死了???
- SpringMVC @RequestBody 接收Json数组对象
- 【分布式】分布式事务解决方案概述
- 计算机义务维修队,我院捷诚义务维修服务队电脑维修服务活动
- 推论统计学基础一:Estimation
- vs2017c语言图像界面库,C語言中在VS2017中構建圖形界面基礎知識點
- Tomcat 详解 一
- css绘制正方体_设计师仅使用CSS绘制了8个标志性X战警
- 【mmall】IDEA自动Make
- Tomcat无需输入项目名,直接用域名访问项目
- MySQL HandlerSocket插件 资料
- ios和android安全对比
- mysqldump备份过程中都干了些什么
- 【Java】ResourceBundle 使用
- 一起学爬虫(Python) — 01
- 运行Android项目时,报Installation failed due to invalid APK file!错误的解决办法
- upnp是不是虚拟服务器,360路由器虚拟服务器设置(360路由器开启upnp功能)
- Windows 10 Conda 更换清华大学的镜像源
- (软件构造) 关于JDK版本更换问题(附jdk下载链接以及jdk环境变量全教程)
热门文章
- Libevent源码分析
- MaxCompute full outer join改写left anti join实践
- Istio 网关之南北向流量管理
- Serverless 工作流给人工智能带来了哪些变化?
- Kubernetes 和 Docker,到底什么关系?
- 盘点丨2019十大边缘计算项目
- 5G 比 4G 快,不只是因为......
- 漫画:五分钟看懂车联网
- 这项技术:华为、BAT要力捧!程序员:我彻底慌了... ​
- 只了解View的事件分发是不够的,来看下输入系统对事件的处理