tags: [笔记, init.py]
categories: [笔记, init.py]
在创建python包的过程中,IDE都会在包根目录下创建一个init.py文件,该Python文件默认是空的。
整理自:https://www.cnblogs.com/AlwinXu/p/5598543.html
1、介绍
每个package实际上是一个目录(Directory),IDE通过init.py文件识别它为package。因此,init.py的第一个作用就是package的标识,如果没有该文件,该目录就不会认为是package。
2、导入包的方式
Python中的包和模块有两种导入方式:精确导入和模糊导入。
2.1 精确导入
from Root.Pack1 import Pack1Class
import Root.Pack1.Pack1Class
2.2 模糊导入
from Root.Pack1 import *
模糊导入中的*中的模块是由all来定义的,init.py的另外一个作用就是定义package中的all,用来模糊导入,如init.py:
__all__ = ["Pack1Class","Pack1Class1"]
在包外部调用时,就会导入all里面的全部模块如Pack1Class”,”Pack1Class1
示例:
from Root.Pack1 import *
a = Pack1Class.Pack1_AA("Alvin")
a.PrintName()
init.py首先是一个python文件,所以还可以用来写python模块,但是不建议这么写,应尽量保证init.py足够简洁:
init.py:
__all__ = ["Pack1Class","Pack1Class1","Init_AA"]
class Init_AA: # 不建议写在__init__.py文件中,可以另建一个py文件写
def __init__(self,name):
self.name = name
def Greeting(self):
print("Hello ",self.name)
在测试中调用:
test.py:
from Root.Pack1 import *
b = Init_AA("test")
b.Greeting()
3、总结:
从上边的例子可以看出,init.py的主要作用是:
1. Python中package的标识,不能删除
2. 定义all用来模糊导入
3. 编写Python代码(不建议在init中写python模块,可以在包中在创建另外的模块来写,尽量保证init.py简单)