添加可选的 argv 参数
首先,修改main()函数 , 使其接受一个可选参数 argv,支持在交互式shell中调用该函数:
def main(argv=None):
if argv is None:
argv = sys.argv# etc., replacing sys.argv with argv in the getopt() call.1234
这样做 , 我们就可以动态地提供 argv 的值,这比下面这样写更加的灵活:
def main(argv=sys.argv):
# etc.12
这是因为在调用函数时 , sys.argv 的值可能会发生变化;可选参数的默认值都是在定义main()函数时,就已经计算好的 。
但是现在sys.exit()函数调用会产生问题:当main()函数调用sys.exit()时 , 交互式解释器就会推出!解决办法是让main()函数的返回值指示退出状态(exit status) 。因此,最后面的那行代码就变成了这样:
if __name__ == "__main__":
sys.exit(main())12
并且 , main()函数中的sys.exit(n)调用全部变成return n 。
定义一个Usage()异常
另一个改进之处,就是定义一个Usage()异常,可以在main()函数最后的except子句捕捉该异常:
import sysimport getoptclass Usage(Exception):
def __init__(self, msg):
self.msg = msgdef main(argv=None):
if argv is None:
argv = sys.argvtry:try:
opts, args = getopt.getopt(argv[1:], "h", ["help"])except getopt.error, msg:raise Usage(msg)# more code, unchanged
except Usage, err:print sys.stderr, err.msgprint sys.stderr, "for help use --help"
return 2if __name__ == "__main__":
sys.exit(main())123456789101112131415161718192021222324
这样main()函数就只有一个退出点(exit)了,这比之前两个退出点的做法要好 。而且 , 参数解析重构起来也更容易:在辅助函数中引发Usage的问题不大,但是使用return 2却要求仔细处理返回值传递的问题 。
python 怎么写main 函数?print 'main'当脚本作为执行脚本时__name__的值为__main__当脚本作为模块时__name__为模块文件名 。
main函数在程序中大多数是必须存在的 。C语言标准中强制要求main函数的返回值类型为int,main函数的返回值是传递给操作系统,让操作系统判断程序的执行情况 。
一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main 函数”,也就是“主函数” 。比如有个“做菜”程序,那么“ 做菜 ”这个过程就是“主函数” 。在主函数中 , 根据情况,你可能还需要调用“买菜 , 切菜,炒菜”等子函数 。
main函数在程序中大多数是必须存在的 , 但是依然有例外情况,比如windows编程中可以编写一个动态链接库模块,这是其他windows程序可以使用的代码 。由于DLL模块不是独立的程序 , 因此不需要main函数 。
从函数的形势看,函数分两类:
无参函数 。printstar和print_message就是无参函数 。在调用无参函数时,主调函数并不将数据传送给被调用函数 , 一般用来执行指定的一组操作 。
有参函数 。在调用函数时,在主调函数和被调用函数之间有数据传递 。也就是说,主调函数可以将数据传递给被调用函数使用 , 被调用函数中的数据也可以带回来供主调函数使用 。
python补充函数fun求出n!并将结果返回主函数下面是 Python 中一个函数的示例,该函数计算给定数字的阶乘并返回结果:n
要使用此函数,您可以从 main 函数调用它,并将 的值作为参数传入 。例如:n
此代码将打印 5 的阶乘,即 120 。
【python的主函数形式的简单介绍】关于python的主函数形式和的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 微信小程序支付域名,微信小程序支付域名怎么弄
- 小区晚上拍摄的图片叫什么,小区晚上拍摄的图片叫什么来着
- 为什么电脑关机了还在通电,为什么电脑关机了不断电
- 上海抗冲击gis保温罩采购,上海gis保温罩工厂
- Java纯代码连接数据库,如何用java链接数据库
- 游戏航天火箭模拟视频,航天模拟火箭发射游戏
- vb.net快捷键注释的简单介绍
- 大字段类型pg,各个字段大小的区别
- 拼手速养成类游戏下载,拼手速游戏软件