python-如何将函数名字符串作为变量传递并进行调用

在代码中,我需要针对一个特定的问题需要调用特定的函数进行解析

为了可扩展性,有可能会出现很多问题,所以我就把每个问题调用什么函数写在配置文件中,如下:

{
  "11000": {
    "check_service": {
      "name": "nc_echopid.sh",
      "cmd": "cd /data/ ; /bin/bash ./nc_echopid.sh",
      "path": "/data/",
      "analysis_func": "analysis_check_service_result"
    }
  }
}

函数具体的定义写在另外一个文件中

所以我从配置文件中读到的是需要调用的函数名,并赋给了变量analysis

analysis = id_script_map[issue_id][task]["analysis_func"]

但是问题来了,我需要实际调用这个函数,如果直接用analysis进行调用,只是字符串,无法进行调用

查找了一番,找到的资料只是说直接传函数,但是我这个是动态的,

最后在一个角落的回答里找到这样一个方法,利用python的globals 查找传递的字符串,并返回函数本身

转化后即可调用

代码如下:

func = globals()[analysis] # 打印出来可以看到func就是analysis函数名对应的函数,类型是function

abnormal_item, normal_item = func(exec_result) # 按照函数定义进行调用即可

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值