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里面可以写什么东西,只知道他是代表一个文件夹是一个包这一个作用的人,那就不需要有这个文件。

希望本文所述对大家程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2k11补丁php,【西乙】西班牙人4比0 武磊替补出场险造点球

体坛周报全媒体原创北京时间3月21日凌晨4:00,西乙联赛第30轮继续进行,西班牙人坐镇主场迎战洛格罗涅斯。上半场,西班牙人4分钟内打进3球,其中恩巴尔巴两传一射,普阿多头球建功,佩德罗萨劲射破门。下半场迪马…

AI+服务 阿里巴巴如何做智能服务转型?

AI下围棋、AI写作文、AI看病……在智能时代,通过新技术的赋能,行业已经发展到了一个新的高度。那么在服务领域,尤其是企业服务中,智能技术的加入会带来哪些新的想象? 在阿里巴巴,智能服务已经成为企业发展…

tfidf关键词提取_基于TextRank提取关键词、关键短语、摘要,文章排序

之前使用TFIDF做过行业关键词提取,TFIDF仅从词的统计信息出发,而没有充分考虑词之间的语义信息。TextRank考虑到了相邻词的语义关系,是一种基于图排序的关键词提取算法。TextRank的提出TextRank由Mihalcea与Tarau于EMNLP04提出来,…

AliOS Things手势识别应用演示

1. 概述 手势识别作为一种辅助的人机交互方式,在人机脱离的场景下可以提供方便的交互体验。本文介绍基于AliOS Things STM32F413H Discovery开发板实现手势交互功能的演示。 2. 环境搭建 开发板:STM32F413H Discovery(附带麦克风阵列板&a…

idea 个性化定制快捷键

添加和修改快捷键 先找到相应的快捷键 鼠标右击,上面add开头是添加,下面remove是移除快捷键

i 智慧 | 回首30年存储演进之路 再看新数据时代阿里云存储如何革故鼎新?

戳蓝字“CSDN云计算”关注我们哦!作者 | 刘丹 责编 | 阿秃 出品 | CSDN云计算(ID:CSDNcloud)人类以日新月异的速度刷新着科技的成果,其中存储的发展历史尤其悠久,堪称万年进化史。自文明诞生以来&#xff0…

php validate form,laravel 中validate验证规则 利用FormRequest进行数据验证

namespace App\Http\Requests;use Illuminate\Foundation\Http\FormRequest;class AddCartRequest extends FormRequest{public function authorize(){return true;}//这两种写法都是支持的public function rules(){return [amount > [required, integer, min:1],pid > r…

AliOS Things声源定位应用演示

1. 概述 利用麦克风阵列进行声源定位在智能降噪、语音增强、语音识别等领域有广泛应用和研究前景。本文介绍基于AliOS Things STM32F413H Discovery开发板实现声源定位算法集成和功能演示。 声源定位算法 本案例集成了STMicroelectronics的Acoustic_SL声源定位算法。Acousti…

可优比和aag哪个好_火花塞多级和单级哪个性能更好?多就等于好?这可未必

从电极数量来判断火花塞性能,选择火花塞的一个误区!不知从何时开始,很多车友选择火花塞特别迷信侧电极数量,认为侧电极数量越多,火花塞就越好,点火火花就越大。我估计这是被一些别有用心的人带节奏了&#…

Quick BI v3.0版本全新起航——2018杭州云栖大会

在9月22日杭州云栖大会云上数据中台专场中,阿里巴巴产品专家陌停跟现场的观众们分享了Quick BI v3.0版本的新体验、新分析和新功能。 作为一个高效数据分析与展现的BI套件,Quick BI通过拖拽式的可视化分析能力,让懂业务的人自助式实现数据分析…

IDEA配置JDK

IDEA配置JDK 项目应用JDK

漫画:我用深度学习框架画下女朋友最美的脸

这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了。阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属。这也得益于 PyTorch 的易学易用,大多数人第一次使用 PyTorch 几乎可以做到无痛…

ecshop模板中使用php,使ecshop模板中可引用常量的实现方法

比如$smarty.const.常量,这个就不能用。其实模板引擎原理上并不复杂,只是把一些模板标签替换为php中的函数,变量,语法结构罢了。这次要在ecshop模板中加入引用常量的功能,只需在函数make_var()中加入两行代码复制代码 …

云端一体化差分+安全升级,AliOS Things物联网升级“利器”

1.1 OTA升级简介 随着物联网的日益发展,OTA升级逐渐成为物联网设备的刚性需求,目前物联网设备种类繁多,但并未提供统一的OTA升级方案,针对日益发展的物联网设备,开发者迫切需要一套云端一体化的OTA升级方案来满足快速迭…

startlogging中设置setstdout=false来禁用这个功能。_Windows 10禁用USB选择性暂停设置,峰哥教你解决USB设备失灵问题...

最近发现在 Win10 笔记本中使用 U 盘或者连接一些 USB 外设的情况下,时不时会有设备失灵的现象。经过研究发现,微软为了节省电力,在 Win10 系统中内置了一项「USB 选择性暂停设置」,而这个功能默认还处于启用状态。启用「USB 选择…

数据库“新解”,看这里,get!

自从第一台通用计算机诞生至今,围绕计算机系统硬件的创新迭代就一直“在路上”,伴随着硬件能力的不断提升,软件更新自然不可缺少。通常来说在传统的计算机软件工程领域,操作系统、编译器与数据库被并称为最具难度的“三剑客”系统…

阿里云发布链路追踪服务Tracing Analysis

近日,在杭州云栖大会上,阿里云发布了链路追踪服务Tracing Analysis,成本是自建链路追踪系统的1/5或更少,可为分布式应用的开发者提供完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具,帮助开发者快速…

深入体验php项目开发.pdf,《深入体验PHP项目开发》.(谭贞军).[PDF]

090756q2fwgddoa5qto2kz.jpg (65.13 KB, 下载次数: 0)2018-8-8 14:24 上传本书介绍:php语言是当今使用最为频繁的网络编程语言之一,一直在开发web领域占据重要的地位。本书通过10个综合实例的实现过程,详细讲解了php语言在实践项目中的综合运用过程&…

DT时代下 数据库灾备的探索与实践

170余场主题峰会和分论坛完美呈现,上千位分享嘉宾、数万名创新创业导师齐聚一堂,刚刚结束的2018杭州云栖大会让云栖小镇又一次成为探索数字世界的中心。 随着DT时代的到来,企业对数据的依赖程度与日俱增,数据保护早已成为企业的一…