如果把一些函数或者是类写在同一个文件中,就会显得难以维护,无论是阅读体验还是修改和维护。如此,我们需要将多个py文件写到不同的文件中,每个文件写不同的功能,如此提高了py文件的可维护性和可扩展性。
比如如下项目:
我们规定,其中的main.py是整个项目程序的入口,程序从这里开始也从这里结束,Core文件夹中存放了这个项目的核心代码和核心功能,而modules文件夹中存放的是一些必要的基本程序,而Init文件夹提供的是对整个项目初始化的功能。
目录如下:
main.py 代码如下:
# 导入Inits文件夹中的 init文件。
from Inits import init
if __name__ == '__main__':
# 使用init.py中的类:Init()
init.Init();
print("start");
init.py代码如下:
import Core.map
from Core import NPC
from Core import player as ply
# 使用语句 :import 导入当前目录的函数或者是类。
# 比如:import Core.map
# 意思是导入Core的map 文件。
# 使用语句:from 目录 import 文件 来导入函数或者类。
# 比如:from Core import NPC
# 意思是导入Core下的NPC 文件。
# 使用语句:from Core import player as ply
# 意思是:导入Core目录下的player文件,并且把player 命名为 ply来使用。
class Init :
def __init__(self) -> None:
# 使用 Core文件夹中的map文件的Map类。
core = Core.map.Map();
# 使用NPC文件中的类NPC
npc = NPC.NPC();
# 使用命令的文件ply中的类Player
p = ply.Player();
print("init the map");
print("init the NPC ");
print("init the player ");
map.py的代码如下:
# 导入Moudles文件夹下的文件math中的类Math。
from Modules.math import Math;
class Map :
def __init__(self) -> None:
# 使用这个类
Math();
print("This is map class");
NPC.py代码如下:
# 导入Moudles文件夹下的文件math中的类Math。
from Modules.math import Math
class NPC :
def __init__(self) -> None:
# 使用这个类
Math();
print("This is not player charactor ");
player.py 代码如下:
# 导入Moudles文件夹下的文件math中的类Math。
from Modules.math import Math
class Player :
def __init__(self) -> None:
# 使用Math这个类。
Math();
print("This is class Player");
math.py代码如下:
class Math :
def __init__(self) -> None:
pass
def add(a,b):
return a+b;
def multiply(a,b):
return a*b;
def devision(a,b):
return a/b;
def sub(a,b):
return a-b;
def index(a,b):
for i in range(1,b):
a*=a;
return a;
通过以上的代码总结如下:
关键字 import 导入文件或者文件目录。
关键字 from 确定import导入的范围。
关键字 as 给导入的文件或者文件夹命一个名字。