[Python]__init__.py 使用

如果需要建立一个python模块让其他地方可以导入并且使用就要在模块的目录下添加 __init__.py文件,通常情况下是空文件就可以了,只是要有这么个名称的文件。

但是我们翻看很多项目的源码的时候就发现,这个文件里有很多的代码,今天就来总结下__init__.py这个文件有哪些用途。

1 在需要封装成模块的目录下建立空的__init__.py文件,是的可以导入并使用此模块(这个是最基础的功能)

2  可以把同一个包下文件经常要导入的包,写在__init__.py 中,然后在文件中导入一次, 就把所有的需要的包导入到文件中了。

[reddit  上有一则关于__init__.py使用的讨论,有兴趣可以看看​]


1 2 #test/__init__.py from datetime  import  datetime

1 2 3 4 #test/foo.py from __init__  import  *   print datetime.now()

好多人也不建议这么做。

3  不仅仅是导入,可以在__init__.py中初始化对象,对于经常使用的对象导入简化点。

这是so上的一个回答 http://stackoverflow.com/questions/448271/what-is-init-py-for

Here is an example from one of my projects, in which I frequently import a sessionmaker called Session to interact with my database. I wrote a “database” package with a few modules:

database/    __init__.py    schema.py    insertions.py    queries.py

My __init__.py contains the following code:

import os from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine engine = create_engine(os.environ['DATABASE_URL']) Session = sessionmaker(bind=engine)

Since I define Session here, I can start a new session using the syntax below. This code would be the same executed from inside or outside of the “database” package directory.

from database import Session session = Session()

Of course, this is a small convenience — the alternative would be to define Session in a new file like “create_session.py” in my database package, and start new sessions using:

from database.create_session import Session session = Session()

    原文作者:orangleliu
    原文地址: https://blog.csdn.net/orangleliu/article/details/26080631
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞