Python: __init__.py 作用

简介: Python: __init__.py 作用

阅读本文需要1.2分钟


__init__.py 的作用

__init__.py 主要是用来初始化 Python 包(packages)的,它在模块加载最开始运行。

以下目录结构为示例:


├─test                                    
│  ├─package_1
│  │  ├─__init__.py 
│  │  ├─m1.py    
│  ├─package_2  
│  │  ├─__init__.py 
│  │  └─m2.py
│  ├─test.py

其中包含两个包 package_1,package_2

__init__.py 中有什么

如上目录结构,如果两个包中的__init__.py 都为空的话,默认在 test.py 中我们只能执行如下:


from package_2 import m2
print(m2.m2s())

当想要执行


import package_2
print(package_2.m2.m2s())


from package_2 import *
print(m2.m2s())

则会抛出异常


AttributeError: module 'package_2' has no attribute 'm2'

这是因为在__init__.py 中并没有进行包提升


如何执行


此时以 package_2 包中的__init__.py 为例

当我们在包中提升导入权限即可:


from package_2.m2 import m2s

在 test.py 中,执行

    from package_2 import m2s
    print(m2s())

    通常我们经常还会遇到 from xxx import *

    我们只需要在 init.py 中加载 all 允许全部导出的模块即可,如在 package_2 的 init.py 中加入


    __all__ = ['m2']

    test.py 中执行


    from package_2 import *
    print(m2.m2s())

    __all__ 是一个列表变量,放的是你希望导入的模块的名字。

    __init__.py 中定义了 __all__ 变量时,import * 只能导入 __all__允许的模块

    原文地址:http://blog.crcms.cn/?p=115

    相关文章
    |
    6月前
    |
    开发者 Python
    【Python】已解决:TypeError: __init__() got an unexpected keyword argument ‘port’
    【Python】已解决:TypeError: __init__() got an unexpected keyword argument ‘port’
    935 0
    【Python】已解决:TypeError: __init__() got an unexpected keyword argument ‘port’
    |
    2月前
    |
    开发者 Python
    Python中__init__.py文件的作用
    `__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
    142 2
    |
    6月前
    |
    IDE 开发工具 Python
    【Python】已完美解决:SyntaxError: Non-UTF-8 code starting with ‘æ‘ in file E:/Python/3.py on line 4, but no
    【Python】已完美解决:SyntaxError: Non-UTF-8 code starting with ‘æ‘ in file E:/Python/3.py on line 4, but no
    183 0
    |
    3月前
    |
    Python
    深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
    深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
    33 1
    |
    5月前
    |
    Python
    Python 中的 __init__
    【8月更文挑战第29天】
    36 7
    |
    4月前
    |
    Python Windows
    Python:执行py命令,提示: Can‘t find a default Python.
    Python:执行py命令,提示: Can‘t find a default Python.
    |
    5月前
    |
    Ubuntu Linux 数据安全/隐私保护
    使用Cython库包对python的py文件(源码)进行加密,把python的.py文件生成.so文件并调用
    本文介绍了在Linux系统(Ubuntu 18.04)下将Python源代码(`.py文件`)加密为`.so文件`的方法。首先安装必要的工具如`python3-dev`、`gcc`和`Cython`。然后通过`setup.py`脚本使用Cython将`.py文件`转化为`.so文件`,从而实现源代码的加密保护。文中详细描述了从编写源代码到生成及调用`.so文件`的具体步骤。此方法相较于转化为`.pyc文件`提供了更高的安全性。
    284 2
    |
    5月前
    |
    移动开发 Java 编译器
    什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
    什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
    76 1
    |
    5月前
    |
    测试技术 Python
    Python 类中__init__方法的作用
    【8月更文挑战第24天】
    173 0
    |
    6月前
    |
    语音技术 开发者 Python
    语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安
    语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安