资讯专栏INFORMATION COLUMN

Python库中__init__.py文件的功效与使用方法实例详细说明

89542767 / 461人阅读

  大家新创建python即时常会看见__init_.py文件,接下来本文关键为大家介绍了有关Python库中__init__.py文件的功效与使用方法的资料,原文中根据实例编码推荐的十分详尽,必须的小伙伴可以借鉴一下


  序言


  在Python施工中,大家经常能看到含有“__init__.py”文件信息文件目录,在PyCharm中,含有这一文件信息文件目录被称之为Pythod的包文件目录,与文件目录的标志会有不同的表明。如图所示,dir_example是1个空缺文件目录,标志是一个文件夹图标,而init_example底下_init__.py文件,其标志是一个包。

01.png

  那么这样的文档有哪些作用,我们平常怎么使用呢?


  一、__init__.py文件介绍


  Python界定了两类单肩包,基本包与类名包。基本包是一般单肩包,因为它存在Python3.2和更早版本号。1个基本包一般被完成为包括__init__.py文件的文件目录。如果一个基本抱被导进时,这一__init__.py文件被隐式实行,其所界定对象被关联到包的名字空间中。


  这也是Python官方文档上对__init__.py文件的描写,我觉得他的意思非常简单,也就是说Python文件都是根据文件目录作为不同类型的控制器来组织,这一文件目录被称之为Python包文件目录,Python可以通过检索该目录下文件来导进有关的控制器。可是并非所有的文件目录都能被检索加上,只有在清单中包括__init__.py文件时,这一文件目录才能被Python当成是一个包文件目录,从而检索加上里边的文档。这么做能让程序编写者自身操纵什么文件目录能够被Python导进成包。


  当某一清单中包括__init__.py文件时,Python在加入这一控制器以前,会第一实行这一文档。因而,这一文档也能被程序编写者用于操纵界定包级别自变量。


  总的来说,__init__.py文件最重要的的作用是2个:


  当目录下包括这一文档时,Python会把它作为成包文件目录,从而可以用importxx.xx的方法导进目录下文件或是控制器。


  应用__init__.py文件能够控制器导进后的自变量与内容,有利于程序编写者操纵。


  下面我们就看好多个事例就可以。


  二、__init__.py文件的应用实例


  2.1、并没有__init__.py文件的文件目录,应用importxx.xx会出错吗?


  看版本号,在相对较低的版本号(如3.2以下的),并没有__init__.py文件的文件目录无法使用importxx.xx导进有关控制器,但后面版本能够。


  2.2、在__init__.py文件中定义变量或是逻辑性将于导进情况下强制执行


  比如,我们会有以下几个目录结构:


  init_example/a_pkg/
  __init__.py
  a.py
  init_test.py


  即init_example工程底下个init_test.py文件和a_pkg文件目录,a_pkg目录下有__init__.py文件和一个a.py文件。


  大家在a_pkg目录下的__init__.py文件界定:

  print("Hey,Iama__init__.pyfile")


  那么,如果我们在init_test.py中内容如下:


  froma_pkgimport*


  实行init_test.py我们可以得到如下结果:


  Hey,Iama__init__.pyfile

  因为在froma_pkgimport*情况下,会第一实行a_pkg目录下的__init__.py文件。


  2.3、在__init__.py文件中定义变量或是方法,能够被直接导入应用


  还是上面的文件目录,假如我们在a_pkg目录下的a.py界定如下内容:


  defa_method():
  print("Iama_pkg!")

  在a_pkg目录下的__init__.py文件界定:

  froma_pkg.aimporta_method


  那么,大家在init_test.py中加入a_pkg可以直接加入a_method方法:


  frominit_example.a_pkgimporta_methoda_method()

  会打印如下内容:

  Iama_pkg!


  2.4、在__init__.py文件中使用__all__方法


  __all__方法可以在__init__.py文件界定一些包或是自变量,能够在使用


  frominit_example.a_pkgimport*

  时界定*表达的内容。


  例如还是上面的内容,但是我们在a_pkg目录下的__init__.py文件定义:

  __all__=["a"]


  那么,我们在init_test.py中使用下面的语句可以引入a模块:


  from a_pkg import*
  a.a_method()


  这时候依然会打印如下内容:

  I am a_pkg!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129035.html

相关文章

  • web.py源码分析: 模板(1)

    摘要:模板函数到底长什么样下面我们就可以来看看模板函数到底长什么样了。当然,首先得创建一个模板文件。总结通过打印中间结果和分析代码,我们已经大概知道了的模板是如何转化成内容的。下一篇文章会阐述模板的各种语法所对应的动态函数内容。 web.py模板的实现原理 web.py的模板实现利用了Python的可执行对象的动态特性:根据模板内容和渲染函数的参数创建一个函数,该函数执行的时候会返回一个Te...

    Rocko 评论0 收藏0
  • python程序流程装包派发实例详细说明

      本文关键给大家介绍了python程序流程装包派发实例详细说明,感兴趣的小伙伴可以参考去了解一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪。  前言  python程序编写时,部分人良好习惯可实现相同功能性的编码放到同一个文件;  使用这个编码只需import就行了;  下边看这个事例。  testModel.py   classTest:   name='tom'  ...

    89542767 评论0 收藏0
  • PythonAsyncio生产调度基本原理详细信息

      此篇文章关键阐述了PythonAsyncio生产调度基本原理详细信息,Python.Asyncio是1个专而精的库,它包括一些功效,而跟关键生产调度有关的思路除开三类可在等待目标外,还有其他某些功效,他们各自坐落于runners.py,base_event.py,event.py3个文档中  序言  在本文《PythonAsyncio中Coroutines,Tasks,Future可在等待对象...

    89542767 评论0 收藏0
  • PythonAsyncio中Coroutines,Tasks,Future可等候目标关联及功效

      此篇文章关键阐述了PythonAsyncio中Coroutines,Tasks,Future可等候目标关联及功效,文章内容紧扣主题进行详尽的基本介绍,必须的朋友可以学习一下  前记  上一篇阅读理解《Python中Async语法协同程序的完成》阐述了Python是如何用制作器来达到协同程序的及其PythonAsyncio根据Future和Task的封装形式来达到协同程序的生产调度,但在Pyth...

    89542767 评论0 收藏0
  • Python基础之(十)模块

    摘要:是回调函数,当链接服务器和相应数据传输完毕时触发本函数可选。仅仅是针对的,在中,已经没有这个模块了,取代它的是。由于以流式读取文件,从而速度较快,切少占用内存,但是操作上稍复杂,需要用户实现回调函数。 编写模块 模块是程序 模块就是一个扩展名为.py的Python程序。 编写模块 #!/usr/bin/env python # coding=utf-8 lang = python 引...

    jlanglang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<