当前位置: 首页 > 面试题库 >

基于argparse的调用函数

胡鸿志
2023-03-14
问题内容

我是python的新手,目前正在使用它。我有一个脚本,对设备执行一些API调用。我想扩展功能并根据调用脚本时给出的参数调用不同的函数。

目前,我有以下内容:

parser = argparse.ArgumentParser()
parser.add_argument("--showtop20", help="list top 20 by app",
                    action="store_true")
parser.add_argument("--listapps", help="list all available apps",
                    action="store_true")
args = parser.parse_args()

我也有一个

def showtop20():
    .....

def listapps():
....

如何基于给定的参数调用函数(并且仅此函数)?我不想跑步

if args.showtop20:
   #code here

if args.listapps:
   #code here

因为我想在以后将主要可执行文件保持整洁的同时将不同功能移至模块。


问题答案:

由于您似乎想根据给定的参数运行一个函数,并且仅运行一个函数,因此建议您使用强制性的位置参数./prog command,而不是可选的参数(./prog --command1./prog --command2)。

因此,应该执行以下操作:

FUNCTION_MAP = {'top20' : my_top20_func,
                'listapps' : my_listapps_func }

parser.add_argument('command', choices=FUNCTION_MAP.keys())

args = parser.parse_args()

func = FUNCTION_MAP[args.command]
func()


 类似资料:
  • 我试图根据某个变量调用某些函数。如果我有很多基于这个变量的函数,它很快就会变得非常难看。我的问题是,是否有比做下面的代码更优雅、更“蟒蛇”的解决方案?

  • 本文向大家介绍基于Docker的PHP调用基于Docker的Mysql数据库,包括了基于Docker的PHP调用基于Docker的Mysql数据库的使用技巧和注意事项,需要的朋友参考一下 docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不

  • 问题内容: 是否可以在不先给函数命名的情况下将函数放入数据结构中? lambda函数的主体受到严格限制,因此我不能使用它们。 编辑:作为参考,这更像是我遇到问题的真实代码。 问题答案: 我认为创建匿名函数的困难有点让人头疼。您真正想要做的是将相关代码保持在一起,并使代码整齐。因此,我认为装饰师可能会为您工作。

  • 为什么下面没有编译: 如有需要,请提供更多详细信息: 我想将tmp传递给父构造函数

  • 本文向大家介绍基于python中__add__函数的用法,包括了基于python中__add__函数的用法的使用技巧和注意事项,需要的朋友参考一下 运算符重载 _add 以上这篇基于python中__add__函数的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我正在寻找此代码将输出: 但是我得到了: 我了解在B的上下文中,A.f1(String)中的“ this”是B的实例。我是否可以选择执行新的链B1()。f1(String)->(A’s)f1(String)->(A’s)f1(int,String)? 这是一个理论问题,实际上,解决方案显然是在A中实现f1(String)和f1(int,String)都将调用的私有函数。 谢谢你, 马克