python基础之__init__.py
如何使用
在 Python 中,当一个目录被作为包来使用时,它会在包中寻找一个名为 __init__.py 的文件。如果该文件存在,Python 会将它加载到内存中,并在其中执行所有的代码。
__init__.py 文件用于初始化包,它可以包含一些初始化代码,例如导入其他模块、定义一些常量或配置选项等。这样,当包被导入时,这些初始化代码就会自动执行,从而给使用者提供了一些方便。
例如,假设我们有一个包叫做 package,包含一个名为 module1.py 的模块,那么可以在 package 目录中创建一个 __init__.py 文件,并在其中导入 module1.py 模块,如下所示:
# package/__init__.py
from .module1 import *
这样,在导入 package 包时,__init__.py 文件中的代码就会自动执行,从而将 module1.py 模块导入到包中。之后,我们就可以直接使用 package.module1 来调用该模块中的函数或类了。
此外,__init__.py 文件可以为空,在这种情况下,它只是用于告诉 Python 当前目录是一个包,不会执行任何代码。但是,如果包中有多个模块,并且您想将它们都导入到包中,那么可以在 __init__.py 文件中将这些模块都导入进来,这样就可以方便地使用这些模块了。
下面是一个更加完整的例子,展示了如何使用 __init__.py 文件来初始化一个包:
# package/__init__.py
# 导入模块1和模块2
from .module1 import *
from .module2 import *
# 定义常量
PACKAGE_CONSTANT = "hello"
# 读取配置文件
with open("package.conf") as f:
conf = f.read()
在上面的例子中,__init__.py 文件首先导入了包中的两个模块 module1 和 module2,然后定义了一个名为 PACKAGE_CONSTANT 的常量,最后读取了一个名为 package.conf 的配置文件。
在导入 package 包时,这些代码都会自动执行,并完成如下操作:
- 导入模块1和模块2,以便在使用时可以直接使用
package.module1和package.module2调用这两个模块中的函数和类。 - 定义了一个常量
PACKAGE_CONSTANT,以便在使用时可以直接使用
注意:
如果在一个目录下创建了一个
__init__.py文件,那么这个目录就会变成一个包
python基础之__init__.py的更多相关文章
- Python包中 __init__.py文件的作用
原创连接 https://www.cnblogs.com/AlwinXu/p/5598543.html Python包中 __init__.py文件的作用 在创建python包的过程中,IDE都会在包 ...
- python 中的__init__.py的用法与个人理解
使用Python模块常见的情况是,事先写好A.py文件,需要import B.py文件时,先拷贝到当前目录,然后再import 这样的做法在程序量较小的情况下是可行的,如果程序交互复杂程度稍高,就很费 ...
- python包中__init__.py文件的作用
python包中__init__.py文件的作用 __init__.py文件最常用的作用是标识一个文件夹是一个 python包. __init__.py文件的另一个作用是定义模糊导入时要导入的内容. ...
- Python包中__init__.py作用
在创建python包的过程中,IDE都会在包根目录下创建一个__init__.py文件,该Python文件默认是空的.目录结构如下: Pycharm下的package树结构: 在Finder中的目录结 ...
- 【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...
- python模块中__init__.py的作用
基本概念先上结论举例解释实验一:不包含__init__.py实验二:A中包含__init__.py实验三:A.A_A中也包含__init__.py进阶基本概念概念 解释import 即导入,方式就是在 ...
- python包中__init__.py的作用
1.__init__.py定义包的属性和方法 一般为空文件,但是必须存在,没有__init__.py表明他所在的目录只是目录不是包 2.导入包的时候使用 例如有一个test目录,test下有xx1.p ...
- Python中的__init__.py的作用
当用 import 导入该目录时,会执行 __init__.py 里面的代码 因此在__init__.py文件中,把深层的包的路径缩短,别的地方就可以在引用到目录级别时引到深层的包.
- Python基础(十) __init__与__new__区别
__init__与__new__区别: __init__在python,其实是,在实例化之后执行的,用来初始化一些属性,相当于构造函数,但是又不一样 细心一些,通过参数会有所发现,其实__init__ ...
- python基础-模块
一.模块介绍 ...
随机推荐
- **错误积累&&防止GG写法总结
19.3.20 关于int与ll 1.如果一道题时间充足,把全部变量定义成long long 2.特别注意最上面宏定义的变量类型,特别是FOR 3.如果是int,用1LL* ...... **实例,让 ...
- 【YashanDB数据库】数据库运行正常,日志出现大量错误metadata changed
问题现象 客户在麒麟kylin v10 sp1环境上部署YashanDB,运行正常, 但是在巡检中发现run.log中有大量错误日志文件metadata changed,需要排查原因 问题单:前置机大 ...
- Ollama + JuiceFS:一次拉取,到处运行
今天这篇博客转载自我们的全栈工程师朱唯唯.在使用 Ollma 进行大模型加载时,她尝试使用了 JuiceFS 进行模型共享,JuiceFS 的数据预热和分布式缓存功能显著提升了加载效率,优化了性能瓶颈 ...
- vue项目自动导入components
开发项目中一般组件都放在 components 目录下,对于一些高频使用的组件我们需要在入口文件中设置为全局组件, 一个一个搞,很繁琐,这里通过webpack自动挂载components为全局组件. ...
- sql 分组查询并新增序号
在SQL中,你可以使用ROW_NUMBER()函数来为结果集中的每一行新增一个序号.这个序号是基于某个排序条件的分区排序结果. 以下是一个简单的例子,假设我们有一个名为students的表,它有两列: ...
- JavaScript Library – Swiper
前言 官网已经有很好的教程了, 这篇只是记入一些我用过的东西和冷门知识. 参考 官网安装 官网 Demo 安装 yarn add swiper JS import Swiper from 'swipe ...
- [rCore学习笔记 027]地址空间
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 引言 ...
- MySQL及navicat安装破解
一.Navicat Premium15 下载安装包和破解工具 1.Navicat官网下载地址:http://www.navicat.com.cn/download/navicat-premium 2. ...
- 使用Minio Clinet将老版本Minio的数据迁移到新版本的Minio
1. 关于Minio Client: MinIO Client是一个命令行工具,用于与Minio或云存储服务进行交互.它支持文件系统和Amazon S3兼容的云存储服务(AWS Signature v ...
- QT原理与源码分析之QT反射机制原理
QT反射机制原理 本文将介绍QT反射机制创建QT对象实例的原理和流程以及源代码. 文章目录 QT反射机制创建QT对象实例 原理 流程 源码 QT反射机制创建QT对象实例 QT框架提供的基于元对象的反射 ...