资讯专栏INFORMATION COLUMN

python中的__init__.py文件和导包总结

CodeSheep / 3059人阅读

摘要:文件和导包总结也是一门学问导入方式的作用把某一个目录变成一个包,使得其他模块使用包包中的某一模块函数变量类这种方式时可用什么时候有用如果某一个目录在后期导入使用时只是作为中间目录衔接使用,则可以不加,如果某个目录后期会被直接或间接显示地作为

python __init__.py文件和导包总结

import也是一门学问~

导入方式

import  
from xxx import yyy

__init__.py的作用

把某一个目录变成一个包,  
使得其他模块使用 包.包中的某一模块/函数/变量/类 这种方式时可用

__init__.py什么时候有用?

如果某一个目录在后期导入使用时只是作为中间目录衔接使用,则可以不加__init__.py,  

如果某个目录后期会被直接或间接显示地作为一个包导入并被使用,那么必须必须必须要加__init__.py,并且__init__.py中的内容会影响导入的内容

每一个目录都是可以被import的

如果一个目录下没有__init__.py,那么在import这个目录时,并不会报错,只会以这个目录名创建一个namespace,里面什么都没有,没有使用价值 module "name" (namespace)  

然而当目录下创建__init__.py后这个目录就可以成为一个包 module "name" from "/Users/miechongdaxia/测试/test/name/__init__.py"

在pycharm下都以绝对路径来引用包或者模块

不要用 . 操作符,尤其是用from import这种方式,import一般直接导入外层目录作为包,而from import会导入内层目录中的包或者模块

python查找模块/包的路径

sys.path的值就是路径

哪些东西可以被直接import?

模块文件(.py文件)

C或C++扩展(已编译为共享库或DLL文件)

目录/包(包含多个模块,不一定要有__init__.py,具体差别看第四点)

内建模块(使用C编写并已链接到Python解释器中)

两种导入方式的区别

from import 可以导入模块中的函数/变量/类等  
import则不行,导入的不是模块就是包目录,无法细化到函数/变量/类等

如果一个目录需要作为一个包使用,一定要在目录下创建__init__.py,并且在里面写好可以导入的模块,不然包目录可以导入,但是无法使用!!!!!

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

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

相关文章

  • python开发】1. __init__.py导包

    摘要:原理根据的开发文档,模块导入主要有以下的步骤,创建一个新空的对象它可能包含多个,把这个对象插入中,装载的代码如果需要,首先必须编译,执行新的中对应的代码。因此可以将初始化代码放入该文件中。 ...

    李义 评论0 收藏0
  • 120 道 Python 面试笔试题汇总(上篇)

    摘要:所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。哈希函数的目的是使键均匀地分布在数组中。由于不同的键可能具有相同的哈希值,即可能出现冲突,高级的哈希函数能够使冲突数目最小化。 首先这篇文章在我的《Python数据结构》公众号已经提及,但是本篇文章提供了更为高级的解法,来发散大家的思维;同时为大家提供我的草稿py文件,大家可以关注《Python数据结构》公众号后恢复 120 ...

    susheng 评论0 收藏0
  • Python Package Import 之痛

    摘要:所以,解决方案是强制要求从整个项目的顶层用来设置端正的路径。这个做法是官方推荐的,也是合逻辑的,即一个完整的项目运行就应当以项目为入口来运行所有的子或子。经过不断的实践,发现他们大都没说清楚上下文,甚至没有告诉完整的解决方案。 参考Python官方:Packages▶参考:Python相对导入一处不解参考:使用相对路径名导入包中子模块 理解Package Python里,就像所有的.p...

    nihao 评论0 收藏0
  • pycharm故障报错:keras导入报错无法自动补全cannot find reference无法

      小编写这篇文章的主要目的,就是给大家来介绍关于pycharm故障报错的一些相关问题,涉及到的故障问题有keras导入报错无法自动补全,另外,还有cannot find reference无法补全,遇到这种问题怎么处理呢?下面就给大家详细解答下。  引言  目前无论是中文还是国外网站对于如何正确的导入keras,如何从tensorflow中导入keras,如何在pycharm中从tensorfl...

    89542767 评论0 收藏0
  • Flask Web 测试驱动开发最佳实践之 Flask 实例

    摘要:当功能越来越复杂的时候,你可能修改了一些东西,导致另外一个功能的不可用,而单元测试也能保证了原有功能被破坏后能被检测出来。 showImg(https://segmentfault.com/img/remote/1460000017081749); 前言 前一篇讲到了 TDD 测试驱动开发的相关概念和环境搭建,这篇就着手开始用TDD方式开发了。首先这篇需要编写用户相关的API接口,如...

    wuyangnju 评论0 收藏0

发表评论

0条评论

CodeSheep

|高级讲师

TA的文章

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