main函数
python是一门脚本语言,它的命令都是按行解释的。在一般的小程序可能不会用到,类似于其他高级语言的main()函数。但Python中还是有类似于main函数的存在。类似于下面这样的
if __name__ == '__main__':
##function
先说一下,main函数的意义。如果是直接运行文件的话,加不加main函数都没什么影响(反正都会按行解释的)。但如果文件作为库被调用时,这种main函数便不会被运行。这是因为,直接运行时name 是等于main的,当被调用时,name
就变成了文件名。
一个最直接的应用是,main函数可以作为调试部分的代码。本人的码量低,还很少用到main函数。
def Hehe(x):
print(x)
print('ok')
if __name__=="__main__":
Hehe(2)
print('hello,world')
一个简单的小例子,当直接运行这个py文件时,所有命令都可以运行。
但如果是调用的话,main函数就不会被运行
import fensorflow
fensorflow.Hehe(2)
fire()
这个函数或者说这个库的作用是自动生成命令行。通过下面的指令进行安装。
pip install fire
关于这个函数有什么意义,现有的资料说的都很空洞,我尽量从实例中让大家感受一下它的用处。
import fire
import datetime
def cal_days(date_str1, date_str2):
'''计算两个日期之间的天数'''
date_str1 = str(date_str1)
date_str2 = str(date_str2)
d1 = datetime.datetime.strptime(date_str1, '%Y%m%d')
d2 = datetime.datetime.strptime(date_str2, '%Y%m%d')
delta = d1 - d2
return delta.days
if __name__ == '__main__':
fire.Fire()
这里的fire.Fire()中可以加入函数(或类)的名字,这样在cmd调用的时候就默认调用该函数(类)了。当然,也可以通过fire查看这个文件的结构,比如
这里我随便写了一个参数,当然出错。但是你可以在Usage发现你能调用的东西,fire和datatime是我们导入的库,cal_days和daystoday是我们写的函数,都是可以调用的。
正确的写法如下,要加上函数名和正确的参数。
C:\Users\dell.000\Desktop\Script\python>python fensorflow.py days2today 20180727
以及最后
fire 默认使用 - 作为参数分隔符,所以如果你要在命令行传入类似 2017-04-22 的参数时,那么程序接收到的参数就肯定不是 2017-04-22 了,你需要使用 –separator 来改变分隔符。
fire 会自动区分你在命令行传入的参数的类型,例如 20170422 会自动识别成 int,hello 会自动识别成 str,’(1,2)’ 会自动识别成 tuple,’{“name”: “Alan Lee”}’ 会自动识别成 dict。但是你如果想要传入一个字符串类型的 20170422 怎么办?那就需要这样写:‘“20170422”’ 或者 “‘20170422’” 或者 \”20170422\”,总之呢,就是加一个转义,因为命令行默认会吃掉你的引号。