最简单的模块化方式
最简单的方式就是把函数,类,变量拆分到不同的文件中,
然后使用 from your_file import function_name, class_name 引用,之后函数和类,就可以在当前文件中直接使用了。
import可以通过相对路径或绝对路径,来导入,同文件夹下的可以不带目录
也可以使用下面的工程化的方式。
#gui/my_gui.py
def get_gui(a)
print(a)
#util/utils.py
def get_sum(a, b):
return a+b
#util/class_utils.py
class Encoder(object):
def encode(self, str):
return s[::-1]
class Decoder(object):
def decode(self, str):
return ''.join(reverse(list(str)))
#util/main.py
from utils import get_sum
from class_utils import *
from gui.my_gui import *
print(get_sum(1, 2))
encoder = Encoder()
decoder = Decoder()
print(encoder.encode('abcde'))
print(decoder.decode('edcba'))
get_gui(1)
注意:
我们还需要在模块所在的文件夹新建一个 ____init___.py,内容可以为空,也可以用来表述包对外暴露的模块接口。不过,事实上,这是 Python 2 的规范。在 Python 3 规范中,____init___.py 并不是必须的
项目模块化
那就是以项目的根目录作为最基本的目录,所有的模块调用,都要通过根目录一层层向下索引的方式来 import。
比如,不要使用..这种相对路径的方式引入项目
if __name__ == '__main__'
Python是脚本语言,和其它语言不同,不需要显式的提供main()函数入口
import模块时,如果函数之外的代码不放到main中,会把这些代码都执行一遍。
name 作为 Python 的魔术内置参数,本质上是模块对象的一个属性。我们使用 import 语句时,name 就会被赋值为该模块的名字,自然就不等于 main了。更深的原理我就不做过多介绍了,你只需要明白这个知识点即可。
网友评论