在 Python 包中,__init__.py 文件用于将一个目录标记为 Python 包,并可以包含初始化代码

部署运行你感兴趣的模型镜像

在 Python 包中,__init__.py 文件用于将一个目录标记为 Python 包,并可以包含初始化代码。以下是 __init__.py 文件的常见用途和示例代码:

1. 包的初始化

__init__.py 文件的存在告诉 Python 解释器该目录应该被视为一个包。即使文件为空,它也起到了这个作用。

2. 模块导入控制

可以在 __init__.py 中定义 __all__ 变量,指定哪些模块会被 from package import * 导入。

示例:

# app/settings/__init__.py
__all__ = ['Settings', 'APP_SETTINGS', 'TORTOISE_ORM']

from .config import Settings
APP_SETTINGS = Settings()
TORTOISE_ORM = APP_SETTINGS.TORTOISE_ORM

3. 包内模块的导入

__init__.py 中导入包内的模块,使得外部可以直接通过包名访问这些模块。

示例:

# app/settings/__init__.py
from .config import Settings  # 导入子模块
from .database import TORTOISE_ORM_CONFIG  # 导入其他配置

# 初始化设置
APP_SETTINGS = Settings()
TORTOISE_ORM = APP_SETTINGS.TORTOISE_ORM

4. 设置全局变量或配置

可以__init__.py 中定义全局变量或配置,供包内的其他模块使用。

示例:

# app/settings/__init__.py
from .config import Settings

# 初始化设置实例
APP_SETTINGS = Settings()

# 配置 Tortoise ORM
TORTOISE_ORM = APP_SETTINGS.TORTOISE_ORM

5. 简化外部调用

通过在 __init__.py 中暴露核心功能,外部代码可以更方便地使用包的功能。

示例:

# app/settings/__init__.py
from .config import Settings
from .utils import get_database_url

# 初始化设置
settings = Settings()

# 暴露方法和变量
__all__ = ['settings', 'get_database_url']

外部使用:

from app.settings import settings, get_database_url

6. 动态初始化

根据环境变量或其他条件动态初始化包。

示例:

# app/settings/__init__.py
import os
from .config import DevelopmentSettings, ProductionSettings

# 根据环境变量选择配置
if os.getenv("ENV") == "production":
    app_settings = ProductionSettings()
else:
    app_settings = DevelopmentSettings()

# 暴露设置
__all__ = ['app_settings']

总结

__init__.py 的主要作用是:

  1. 将目录标记为 Python 包。

  2. 控制模块的导入和暴露。

  3. 初始化包内的配置和资源。

  4. 提供全局变量或工具函数。

通过合理设计 __init__.py,可以让包的结构更清晰,使用更方便。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值