文件夹下的 __init__.py
文件:
1.普通的文件夹变成包是在文件夹下包含_init_.py文件
2.__init__.py
模块的导入就是包名
3.__init__.py
文件基本的作用是当一个包被导入的时候,__init__.py
文件被自动的执行
4.如果在每个模块下都需要导入相同库(比如 import sys),为了避免重复的工作,可以在__init__.py
文件下统一导入,然后在需要引入的模块中导入包名即可
.py
文件下的__init__()函数:
从字面意思来看像是初始化函数。这个函数实际上是python中类的构造函数。在C#或Java中,当创建一个类的时候,一般都会在类中声明一个以类的名字命名的且无返回值的函数,那么这个函数就是类的构造函数。python中的类也一样有着自己的构造函数,不同的是这个构造函数不是以类的名称命名而是固定的__init__()
。这个函数在什么时候调用又有什么用途呢?
在C#中
public class Test{
public Test(){
Console.WriteLine("我是Test类的构造函数,我在类被示例化时调用");
}
}
new Test()//此时会调用构造函数并输出“我是Test类的构造函数,我在类被示例化时调用”
在python中
class Test():
def __init__(self):
print("我是Test的构造函数,我将在类被实例化时调用")
t = Test()#此时会输出“我是Test的构造函数,我将在类被实例化时调用”
构造函数将会在类被实例化时调用,也就是说不管在哪里只要遇到Test(),那么类的构造函数就会被调用。
因为类在被初始化时会调用构造函数,所以一般情况下,构造函数会用于初始化一些类的基本数据所用。
注意:避免包和模块循环引入
入口文件的概念:
ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口。
模块的内置变量,比如__all__ 当引入的时候,可以限制哪些变量不需要导入
大家加油!
学习链接: 第7章 包、模块、函数与变量作用域
python基础语言之__init__()call()str()和__all__的用法及讲解