[Python]__init__.py 使用
2014-05-17 16:43
411 查看
如果需要建立一个python模块让其他地方可以导入并且使用就要在模块的目录下添加 __init__.py文件,通常情况下是空文件就可以了,只是要有这么个名称的文件。
但是我们翻看很多项目的源码的时候就发现,这个文件里有很多的代码,今天就来总结下__init__.py这个文件有哪些用途。
1 在需要封装成模块的目录下建立空的__init__.py文件,是的可以导入并使用此模块(这个是最基础的功能)
2 可以把同一个包下文件经常要导入的包,写在__init__.py 中,然后在文件中导入一次, 就把所有的需要的包导入到文件中了。
[reddit
上有一则关于__init__.py使用的讨论,有兴趣可以看看]
好多人也不建议这么做。
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
interact with my database. I wrote a "database" package with a few modules:
My
the following code:
Since I define
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.
Of course, this is a small convenience -- the alternative would be to define
a new file like "create_session.py" in my database package, and start new sessions using:
但是我们翻看很多项目的源码的时候就发现,这个文件里有很多的代码,今天就来总结下__init__.py这个文件有哪些用途。
1 在需要封装成模块的目录下建立空的__init__.py文件,是的可以导入并使用此模块(这个是最基础的功能)
2 可以把同一个包下文件经常要导入的包,写在__init__.py 中,然后在文件中导入一次, 就把所有的需要的包导入到文件中了。
上有一则关于__init__.py使用的讨论,有兴趣可以看看]
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
sessionmakercalled
Sessionto
interact with my database. I wrote a "database" package with a few modules:
database/ __init__.py schema.py insertions.py queries.py
My
__init__.pycontains
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
Sessionhere,
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
Sessionin
a new file like "create_session.py" in my database package, and start new sessions using:
from database.create_session import Session session = Session()
相关文章推荐
- Python 中__init__.py的使用(通过包调用方法)
- Python 中__init__.py的使用(通过包调用方法)
- python __init__.py的作用 distutils 的使用
- python学习(2):自定义包结构及__init__.py模块和__all__变量的使用
- Python __init__.py 使用
- python学习比较 __init__.py 简单使用
- python 的 __init__.py 的使用说明
- python识别图片使用pytesser模块时__init__.py调用subprocess模块出现WindowsError: [Error 2]
- python __init__.py
- Python模块包中__init__.py文件的作用
- 转:python之 __init__.py
- python __init__.py
- Python包中__init__.py
- Python模块包中__init__.py文件的作用
- python __init__.py
- python __init__.py
- Python抓取优酷视频(下):使用web.py搭建网站框架
- python使用web.py 创建web服务
- python __init__.py
- python中__init__.py文件的作用