Python 源目录中的用途是什么?__init__.py
网友回答:
命名文件用于将磁盘上的目录标记为 Python 包目录。
如果您有文件__init__.py
mydir/spam/__init__.py
mydir/spam/module.py
并且在您的路径上,您可以将代码导入为mydir
module.py
import spam.module
或
from spam import module
如果删除该文件,Python 将不再在该目录中查找子模块,因此尝试导入模块将失败。__init__.py
该文件通常为空,但可用于以更方便的名称导出包的选定部分,保存方便的功能等。
给定上面的例子,init 模块的内容可以作为__init__.py
import spam
基于此
网友回答:
它曾经是包的必需部分(旧的,3.3 之前的“常规包”,而不是较新的 3.3+ “命名空间包”)。
这是文档。
Python 定义了两种类型的包,常规包和命名空间包。常规包是 Python 3.2 及更早版本中存在的传统包。常规包通常实现为包含文件的目录。导入常规包时,将隐式执行此文件,并且它定义的对象将绑定到包命名空间中的名称。该文件可以包含与任何其他模块可以包含的相同的 Python 代码,Python 将在导入模块时向模块添加一些额外的属性。
__init__.py
__init__.py
__init__.py
但只需单击链接,它包含一个示例、更多信息和命名空间包的说明,没有 .__init__.py
网友回答:
除了将目录标记为 Python 包和定义 ,__init__.py
还允许您在包级别定义任何变量。如果包定义了将以类似 API 的方式频繁导入的内容,则这样做通常很方便。这种模式促进了对 Pythonic “扁平比嵌套更好”理念的坚持。__all__
下面是我的一个项目的示例,其中我经常导入一个调用以与我的数据库进行交互。我写了一个包含几个模块的“数据库”包:sessionmaker
Session
database/
__init__.py
schema.py
insertions.py
queries.py
My 包含以下代码:__init__.py
import os
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
engine = create_engine(os.environ['DATABASE_URL'])
Session = sessionmaker(bind=engine)
由于我在这里定义,因此可以使用以下语法启动新会话。此代码与从“数据库”包目录内部或外部执行的代码相同。Session
from database import Session
session = Session()
当然,这是一个小小的便利 — 另一种方法是在我的数据库包中的“create_session.py”等新文件中定义,并使用以下命令启动新会话:Session
from database.create_session import Session
session = Session()
有一个非常有趣的reddit线程涵盖了这里的适当用法:__init__.py
http://www.reddit.com/r/Python/comments/1bbbwk/whats_your_opinion_on_what_to_include_in_init_py/
大多数人的意见似乎是文件应该非常薄,以避免违反“显式优于隐式”的理念。__init__.py
模板简介:该模板名称为【Python 源目录中的用途是什么?__init__.py】,大小是暂无信息,文档格式为.html,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。