python中__init__.py文件

news/2024/11/15 2:01:56/

例子

不要使用相对路径。

'''
__init__.py
'''
# from net.functions import *
VERSION = "1.0.0"import os, sys
module_path = os.path.dirname(__file__)
module_parent_path = os.path.dirname(module_path)
sys.path.extend([module_path, module_parent_path])
from net import *from functions import *
from net.fnetlogger import FnetLogger

模块导入

在Python中,一个包是一个目录,它包含了一组相关的模块和子包。在这个包目录下,如果存在一个名为__init__.py的文件,它将被视为这个包的初始化模块。

__init__.py的作用是在导入包时执行一些初始化代码,例如设置包的默认属性或者导入子模块。同时,它还可以控制包的导入行为,定义包的接口和子包的可见性等。

下面是一个示例,假设我们有一个名为my_package的包,它包含了两个模块module1module2,并且我们想在包被导入时执行一些初始化代码:

my_package/__init__.pymodule1.pymodule2.py

我们可以在__init__.py中编写如下代码:

# my_package/__init__.pyprint("Initializing my_package...")# 导入模块
from my_package import module1
from my_package import module2# 设置默认属性
VERSION = "1.0.0"

这里我们在__init__.py中输出了一条初始化信息,并导入了module1module2模块。我们还定义了一个名为VERSION的默认属性,可以在其他模块中使用。

当我们导入my_package时,__init__.py会被自动执行,输出初始化信息并导入模块:

import my_package# 输出 "Initializing my_package..."
# 并导入 my_package.module1 和 my_package.module2

这样,我们就可以在包被导入时执行一些初始化操作,并方便地导入子模块和设置默认属性。

建议不要使用相对路径,即点符号

不要使用相对路径。

点符号

从如下代码:

from . import module1

代码中的点符号是相对路径,是相对当前模块文件夹的路径,而不是编译器等其他路径。即如下:

# . in __init__.py the same as
os.path.dirname(__file__)

关于import *

# __init__.py
from . import *	# attention:: DO NOT Use Relative Path.
from xx import *# the same as
from os import *

在python的__init__.py文件中经常能看到import *,它的意思就是将文件中的函数,变量,类等全导入。列入你在文件中有个属性是Pi,你在使用from xx import Pi后,你便可以直接调用Pi,而不需要使用xx.Pi来调用Pi。


http://www.ppmy.cn/news/46888.html

相关文章

Matlab进阶绘图第17期—气泡热图

气泡热图是一种特殊的热图(Heatmap)。 与传统热图相比,气泡热图利用不同颜色、不同大小的圆形表示数据的大小,可以更加直观地对矩阵数据进行可视化表达。 本文使用自制的bubbleheatmap小工具进行气泡热图的绘制,先来…

赋值法写基础解系中解向量

赋值法写基础解系中解向量 (一)背景引入 通常解方程组时,将系数矩阵化为行阶梯型,进而可化为行最简型 (说一嘴:行最简型是指阶梯口元素全是1,该1所在列全其余全为0;广义行阶梯的阶梯…

5G NR调制阶数与EVM关系以及对系统SNR要求分析

移动通信技术对数据传输速率要求越来越高。一种提高传输速率的思路是使用更高阶的QAM 调制方式,例如5G NR 的256QAM PDSCH,微波的1024QAM,2048QAM和4096QAM 调制。更高阶的QAM 调制方式对系统也提出了更高的要求。例如某个系统的EVM 测试结果…

【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个文件占用了内存太大了。 使用例子如下,用JAVA 运行Sort 1,…

YOLOv8详解代码实战,附有效果图

YOLOv8架构 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务,鉴于Yolov5的良好表现,Yolov8在还没有开源时就收到了用户的广泛关注。yolov8的整体架构如下&…

tmux使用方法

tmux使用指南:比screen好用n倍! - 知乎 当你开启一个session的时候会默认开启一个window,这个截图就是一个window,而这个window可以拆成很多分subwindow,在这里就是:左上角Asubwindow,左下角Bsu…

UE4 回放系统升级到UE5之后的代码报错问题解决

关键词: UE4 回放系统 升级 UE5 报错 DemoNetDriver GetDemoCurrentTime GetDemoTotalTime 背景 照着网上教的UE4的回放系统,也叫重播系统,英文Replay。做完了,测试运行正常,可升级到UE5却报了一堆 WorldSetting 和 …

Java数据结构与算法----动态规划(背包篇)

1. 0/1背包 1.1.算法思路 0/1背包是动态规划、背包问题中最经典的问题啦!它主要的问题是: 给定n种物品、这n种物品的重量分别是,价值分别是 ,而你有一个容量为C的背包,请问如何求出所能拿的最大价值呢? …