Python中__init__.py文件的作用

2023-05-16

在创建python包的过程中,IDE都会在包根目录下创建一个__init__.py文件,该Python文件默认是空的.目录结构如下:

Pycharm下的package树结构:

在Finder中的目录结构:

从Finder中的目录就可以看出来,每个package实际上是一个目录(Directory),那么IDE是怎么识别它为package呢?没错,__init__.py的第一个作用就是package的标识,如果没有该文件,该目录就不会认为是package。

Python中的包和模块有两种导入方式:精确导入和模糊导入:

精确导入:


from Root.Pack1 import Pack1Class

import Root.Pack1.Pack1Class  

模糊导入:


from Root.Pack1 import *  

模糊导入中的*中的模块是由__all__来定义的,__init__.py的另外一个作用就是定义package中的__all__,用来模糊导入,如__init__.py:


__all__ = ["Pack1Class","Pack1Class1"]  

在包外部调用:


from Root.Pack1 import *

a = Pack1Class.Pack1_AA("Alvin")

a.PrintName()  

__init__.py首先是一个python文件,所有还可以用来写python模块,但是不建议这么写,尽量保证__init__.py足够轻:

__init__.py:


__all__ = ["Pack1Class","Pack1Class1","Init_AA"]

class Init_AA:
    def __init__(self,name):
        self.name = name

    def Greeting(self):
        print("Hello ",self.name)  

在测试中调用:


from Root.Pack1 import *

b = Init_AA("test")

b.Greeting()  

 

总结:

从上边的例子可以看出,__init__.py的主要作用是:

1. Python中package的标识,不能删除

2. 定义__all__用来模糊导入

3. 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中__init__.py文件的作用 的相关文章

随机推荐

  • 信号量sem_init,sem_wait,sem_post

    本篇文章是信号量的简单入门 xff0c 主要学习关于信号量四个函数的使用 文章综合整理了两篇文章 xff1a http blog csdn net qyz og article details 47189219 http blog csdn
  • readdir函数

    readdir会不断读取目中的文件及目录 xff0c 但不会读子目录中的文件 include lt sys types h gt include lt dirent h gt include lt stdio h gt include lt
  • fwrite写文件是乱码

    fwrite写的二进制文件 xff0c 所以我们打开所写的文件是乱码 xff0c 但数据是正确的 xff0c 我们通过fread函数按照原来的数据格式读取即可 可以参考该文 include lt sys types h gt include
  • 经典面试题 动态链接库与静态链接库的区别

    经典面试题 动态链接库与静态链接库的区别 面试轻松学习 xff0c offer快点拿 文章目录 经典面试题 动态链接库与静态链接库的区别一 动态链接库是什么 xff1f 二 静态链接库是什么 xff1f 三 区别1 静态链接库速度快 xff
  • Docker占用的磁盘空间清理

    Docker占用的磁盘空间清理 1 docker system命令 在谁用光了磁盘 xff1f Docker System命令详解中 xff0c 我们详细介绍了docker system命令 它可以用于管理磁盘空间 docker syste
  • 卡尔曼滤波算法详细推导(全网最详细的推导过程)

    本文是来源于B站Dr CAN的视频的学习笔记 xff0c 有需要详细了解的 xff0c 可以到B站看相关视频DR CAN的个人空间 1 递归算法 例 xff1a 假设测一段距离 xff0c 第一次测 z 1 z 1 z 1 61 50 1m
  • ADC采样滤波算法利用卡尔曼滤波算法详解

    1 ADC采样模型 xff08 本文为笔者早期所写 xff0c 当时对卡尔曼滤波器理解尚未透彻 xff0c 如今回顾 xff0c 该模型还有所缺陷 xff0c 推荐读者看卡尔曼的推导过程或者B站大佬Dr CAN的空间 xff09 假设ADC
  • 微信支付趟过的坑

    这段时间在做微信支付开发 xff0c 在公司的公众号审批下来后 xff0c 我这边的测试用例也已经开发完毕 xff0c 于是拿着具体的数据来调试了 xff0c 大段大段的代码就不贴了 xff0c demo里有 xff0c 这里就说说调试过程
  • java底层原理

    Java运行三部曲 xff1a 编写 xff0c 编译 xff0c 运行 编写 xff1a 硬件编写代码 xff0c 就是我们写代码 编译 xff1a javac将文件编译成一个或多个 class文件 编译中间的过程主要是类型和格式的检查
  • 信息化时代下的我们----弄潮儿

    读完 信息化与信息管理实践之道 的部分章节想起了 第三次浪潮 中的一段话 xff0c 摘录如下 人类到现在已经经历了两次巨大的变革浪潮 这两次浪潮都淹没了早先的文明和文化 xff0c 都是以前人所不能想象的生活方式 xff0c 替代了原来的
  • ORB-SLAM稠密点云地图构建(黑白+彩色)+ pcd文件以八叉树形式表示

    pcl1 8 1 VTK 7 1 1 版本一定要对好 xff0c 如果安装了不符的版本如我之前安的pcl1 1 3和VTK8 2 一定要卸载干净不然会一直报错 xff0c 不同版本的pcl和vtk是无法共存的 xff0c 并且光把包删除是不
  • 一步步学习多线程(一) 重要概念

    几个重要的概念 1 同步 xff08 synchronous xff09 和 异步 xff08 asynchronous xff09 2 并发 xff08 Concurrency xff09 和 并行 xff08 Parallelism x
  • MAVLink功能开发,移植教程。

    MAVLink功能开发 本文由 智御电子 提供 xff0c 同时提供视频移植教程 xff0c 以便电子爱好者交流学习 1 MAVLink简介 MAVLink是一种针对微型飞行器 xff0c 推出的轻量化 xff0c 仅由头文件信息编码而成的
  • workerman问题总结大全及解决方案

    workerman无法正常访问 问题描述 xff1a 在阿里云ECS上部署了workerman的应用 xff08 ECS是专有网络 xff09 xff0c 在ECS安全组里已经允许workerman需要的全部端口 xff0c 但是外网一直不
  • Eclipse Android开发遇到:"The type org.apache.http.HttpResponse cannot be resolved."问题的解决办法

    今天在做手机卫士的项目中 xff0c 在联网下载的功能模块中遇到The type org apache http HttpResponse cannot be resolved It is indirectly referenced fro
  • UG创建图纸明细表失败的情况

    今天进行UG二次开发的时候 xff0c 由于要在图纸中自动加入零件明细表 xff0c 但是当我在图纸中插入明细表的时候UG会弹出错误对话框 xff1a 当打开UGII UPDATE ALL ID SYMBOLS WITH PLIST变量时
  • 字符串末尾自动加上'\0'的情况

    之前一直都有一个问题困扰着我 xff0c 就是我们知道C风格的字符串在用strlen求长度时只会遇到 39 0 39 结束 xff0c 如果一个字符数组全部填满了 xff0c 而在末尾没有加上 39 0 39 就会出现结果不定的现象 xff
  • c++类成员变量的初始化顺序以及特殊成员的初始化方法规则

    说到类的成员变量的初始化顺序 xff0c 对于初学者很多容易混淆其顺序 xff0c 以为简单的按初始表来初始化 xff0c 其实不然 xff0c 现在我来详细讲解下类的初始化顺序 xff1a 首先由简单开始 xff1a class peop
  • deque 迭代器失效的问题详解

    今天在看STL源码的时候 xff0c 无意写了如下的代码 xff0c 发现程序崩溃了 xff1a lt span style 61 34 font size 14px 34 gt deque lt int gt iterator iter
  • Python中__init__.py文件的作用

    在创建python包的过程中 xff0c IDE都会在包根目录下创建一个 init py文件 xff0c 该Python文件默认是空的 目录结构如下 xff1a Pycharm下的package树结构 xff1a 在Finder中的目录结构