持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
python 和其他语言相比较,并没有强调main函数作为出口函数,但是实际的开发过程当中,尤其是自动化开发(这里包括自动化测试,自动化运维,自动化办公)这样的单独脚本使用比较多的时候,main出口思想还是很有必要的,我们由小到大说:
代码块
首先在单文件的场景下,可以写出很多的个Python功能模块,这些模块可能是类,也可能是函数,但是个人建议尽量把业务逻辑和功能分开 啥意思?比如:
第一个功能拼接url,那么就是拼接url
第二个功能请求服务器,那么就是请求服务器,
那到了拼接5个功能url,进行5次请求,就不要放在上面的任何一共功能里面,这样可以很好的保持代码的独立性,下次在别的地方使用也不会造成逻辑粘连(比如使用请求服务器,必须得注意之前的循环逻辑......)
所以这个时候多出一共main函数来写调用逻辑,思路会清晰好多,伪代码举例:
def get_url(path):
print("我会拼接路由")
def request_server(url):
print("我可以通过url来访问服务器")
def main():
for i in "100个url":
url = get_url(i)
response = request_server(url)
模块
上面是针对一个一个的函数说的,但是在Python当中有一个很有趣的功能就是在自己创建模块,而在自动化开发的过程当中,经常性的将自己的脚本作为模块使用,那么,在模块搭建完成之后,是否要测试一下呢,或者保留一个测试的dome呢,显然,这个是很有必要的,但是,如果直接写在脚本当中,那么导入的时候会被导入或者执行,这个肯定是不行的,用户使用自己的测试数据,嘿嘿嘿,有点尴尬呢。
所以,python推出了__name__变量,这个变量会有两个值,如果脚本直接执行,值为脚本的相对路径+名称,如果导入执行,那么值会变成一个固定的值 'main',所以我们可以这样做:
def introduce(name):
print("我是%s"%name)
if __name__ == "__main__":
introduce("小白兔") #这个你不想让别人导入的时候看到吧
if __name__ == "__main__":,就是告诉脚本,只有自己执行的时候,执行下面的代码
框架
搭建框架肯定会有一个main文件,不为别的,到了框架这一层就是想着在调用整个功能的时候可以执行一个文件,像linux命令一样的优雅,并且方便添加全局的参数,这里就不举例子了,搭建看一下django的manage.py,flask的app.py等文件就知道了。
总结
所以,尽管Python没有强调mian是唯一出口,但是实际上还是需要大家在开发的过程当中使用main这种出口思想。