主功能的简化接口。
pymain的Python项目详细描述
pymain-简体main
pymain是一个decorator和相关工具,用于简化main函数。 它的目的是比argparse更易于使用和理解,而 仍然提供类似库的大部分功能。
说明
pymain的基本思想是您的主函数(尽管它不需要 称为“main”),因此您的脚本或应用程序本身,可能 以命令行参数的形式接受参数和关键字参数。 由于该接口的工作方式与调用python函数非常相似,pymain 在这些接口之间转换。另外,很多脚本 入口点包括if __name__ == '__main__':样板和pymain 旨在消除这种情况。
用法
在具有类型的主函数之前导入并使用@pymaindecorator 参数的注释。如果你不需要任何短选项或别名, 这就是你需要做的。pymain将检测定义模块是否 作为脚本运行(因此是__name__ == "__main__"),或者 进口的。如果它作为脚本运行,那么将调用main并给出参数 基于sys.argv。如果是导入的,那么pymain将不运行该函数 作为一个主函数,它仍然可以正常调用。
pymain使用类型注释来确定期望的类型。简称 选项或别名,可以在^{tt6}之后添加@aliasdecorator$ 描述别名的修饰符(单个别名或 多个)
长度大于一个字符的所有参数都是长选项 (例如–arg)和只有一个字符的参数是短选项 (例如-a)。别名遵循相同的规则。
示例
可选.py:
frompymainimportpymain@pymaindefmain(a:float,b:float,c:str=None):print(a/b)ifcisnotNone:print(c)
命令行:
~ $ python optional.py 422.0
~ $ python optional.py 92 message 4.5 message
keyword.py:
frompymainimportpymain@pymaindefmain(first:int,second:int,*,message:str=None):print(first+second)ifmessageisnotNone:print(message)
命令行:
~ $ python main.py 4610
~ $ python main.py 12 --message "Hello, World!"3 Hello, World!
alias.py:
frompymainimportpymain,alias@pymain@alias({"opt1":"x","opt2":"y"})deffoo(value:float,*,opt1:float=1.0,opt2:float=2.0):print(value+opt1)print(value-opt2)
命令行:
~ $ python alias.py 23.0 0.0
~ $ python alias.py 5 -x 1 -y 16.0 4.0
~ $ python alias.py 10 --opt1 5 --opt2 215.0 8.0