我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中__init__.py文件的作用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中__init__.py文件的作用

1 init文件夹图标

在PyCharm中,带有__init__.py这个文件的目录被认为是Python的包目录,与普通目录的图标有不一样的显示。
如下图所示,data目录没有__init__.py,其图标是个文件夹图标;而model下有_init__.py文件,其图标是一个包。所以__init__.py是Python中package的标识

2 init.py导入包方式

__init__.py文件的一个主要作用是将文件夹变为一个Python模块,Python中的每个模块的包中,都有__init__.py 文件。

python在解释包的时候会给本模块下的所有文件建立一个索引放在当前路径下的__init__.py文件中,如果没有文件索引,即使import了指定的包,解释器还是找不到这个模块下的文件。如果一个文件夹下没有__init__.py文件,不会被当做一个模块。

2.1 单个导入

# package
# __init__.py
import re
import urllib
import sys
import os
# a.py
import package 
print(package.re, package.urllib, package.sys, package.os)

注意这里访问__init__.py文件中的引用文件,需要加上包名。

2.2 批量引入(定义__all__用来模糊导入)

我们在python中导入一个包时,实际上是导入了它的__init__.py文件,这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

使用__init__.py中的重要变量__all__, 将模块全部导入。

# __init__.py
__all__ = ['os', 'sys', 're', 'urllib']
# a.py
from package import *

这就会将注册在__init__.py文件中__all__列表中的模块和包导入到当前文件中来。

3 实例

假设我们的模块包的目录结构如下:

- mypackage
- - subpackage_1
- - - test11.py
- - - test12.py
- - subpackage_2
- - - test21.py
- - - test22.py
- - subpackage_3
- - - test31.py
- - - test32.py

直接导入:

如果我们使用最直接的导入方式,将整个文件拷贝到工程目录下,然后直接导入:

from mypackage.subpackage_1 import test11
from mypackage.subpackage_1 import test12
from mypackage.subpackage_2 import test21
from mypackage.subpackage_2 import test22
from mypackage.subpackage_3 import test31
from mypackage.subpackage_3 import test32

这样的话,查找的时候也会麻烦,此时__init__.py就起到了简化的作用。

init.py导入:

在mypackage/添加__init__.py程序,有三种写入方式。

from mypackage.subpackage_1 import test11
from mypackage import *
from mypackage.subpackage_1 import *

4 其他常见问题

4.1 使用__init__.py文件的优点

  • ①当目录下包含这个文件时,Python会将其当作成包目录,进而可以使用import xx.xx的方式导入目录下的文件或者模块。
  • ②使用__init__.py文件可以控制模块导入时的变量和内容,便于编程者的控制。(简化作用)

4.2 没有__init__.py文件的目录,使用import xx.xx会报错吗?

在较低的版本中(如3.2及以下),没有__init__.py文件的目录不能使用import xx.xx导入相关模块,但是后面的版本可以。

4.3 根据导入模块和主程序不同import方式

(1)如果导入的模块和主程序在同个目录下,直接import就行了

(2)如果导入的模块是在主程序所在目录的子目录下,可以在子目录中增加一个空白的__init__.py文件,该文件使得python解释器将子目录整个也当成一个模块,然后直接通过“import 子目录.模块”导入即可。

(3)如果导入的模块是在主程序所在目录的父目录下,则要通过修改path来解决,有两种方法:
①通过sys.path.append

import sys
sys.path.append('父目录的路径')  # '需要引用模块的地址'

来改变。python解释器就是通过sys.path去的寻找模块的。sys.path是一个列表 list ,它里面包含了已经添加到系统的环境变量路径。

【注意】:这种方法是运行时修改,脚本运行后就会失效。

②直接修改环境变量:在windows中是 “ set 变量=‘路径’ ” 例如:set PYTHONPATH=‘C:\test…’ 查看是否设置成功用echo %PYTHONPATH%,而且进到python解释器中查看sys.path,会发现已经有了新增加的路径了。这 种方式是永久的,一次设置以后一直都有效。在linux中是 “export 变量=‘路径’ “,查看是” echo $变量 "

到此这篇关于Python中__init__.py文件的作用的文章就介绍到这了,更多相关Python__init__.py文件 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中__init__.py文件的作用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中__init__.py文件的作用详解

__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导
2022-06-04

Python中__init__.py文件

在Python中每次创建一个package后都会自动生成一个 __init__.py'空文件;该文件的作用是:声明我们当前创建的文件夹(包)是一个**Python模块**,在Python中每一个包中必须有一个__init__ .py文件.一
2023-01-31

Python中__init__.py文件怎么写

这篇“Python中__init__.py文件怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中__init
2023-07-05

Python包中__init__.py文件怎么使用

这篇文章主要讲解了“Python包中__init__.py文件怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python包中__init__.py文件怎么使用”吧!一、__init_
2023-07-02

深入理解Python中__init__.py文件

本文主要介绍了深入理解Python中__init__.py文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-09

Python模块包中__init__.py文件功能分析

本文实例讲述了Python模块包中__init__.py文件功能。分享给大家供大家参考,具体如下: 用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文
2022-06-04

python中super().__init__()作用详解

super()用来调用父类(基类)的方法,__init__()是类的构造方法,super().__init__() 就是调用父类的init方法, 同样可以使用super()去调用父类的其他方法,这篇文章主要介绍了python中super().__init__(),需要的朋友可以参考下
2023-02-03

python中__init__的意义以及作用

python中的__init__是一个私有函数(方法),访问私有函数中的变量在python中用self,在PHP中用$this,这篇文章主要介绍了python中__init__的意义以及作用,需要的朋友可以参考下
2023-02-27

python怎么调用py文件

通过 import 语句导入 python 文件,具体步骤为:1. 创建要导入的 python 文件,定义函数或类;2. 在主 python 文件中使用 import 语句导入模块;3. 使用点号运算符(.)访问导入模块中的函数或类。如何在
python怎么调用py文件
2024-05-22

python中 __init__的意义及作用是什么

这篇文章主要介绍“python中 __init__的意义及作用是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中 __init__的意义及作用是什么”文章能帮助大家解决问题。pyth
2023-07-05

Python的py文件中有哪些细节

本篇内容介绍了“Python的py文件中有哪些细节”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!模块是一种以.py为后缀的文件,我们可以在.
2023-06-02

Python制作小软件——3. 利用Py

本篇博客衔接前面两篇博客: Python制作小软件——1. 安装并使用PyQt5进行界面设计、Python制作小软件——2. 实现界面中的退出功能。本文将介绍如何使用Python编写后端的代码,实现我们前面做好的界面中的功能。转换来的Pyt
2023-01-31

python怎么调用其他py文件

python 中可以通过以下步骤调用其他 python 文件:使用 import 语句导入文件。使用点符号访问模块属性和函数。使用 as 关键字重命名导入以避免冲突。使用相对导入调用当前目录或子目录中的文件。使用绝对导入调用不同目录或包中的
python怎么调用其他py文件
2024-05-05

python运行py文件的方法

这篇“python运行py文件的方法”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“python运行py文件的方法”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们
2023-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录