如何通过字符串名称调用Python导入模块utilities中的对应函数
通过字符串调用模块内对应函数的实现方法
Python内置的getattr()函数可以直接从对象(此处为导入的utilities模块)中获取指定名称的属性,你可以用该方法拿到对应函数对象后直接传参调用,示例如下:
import utilities x = 'func_1' # 获取utilities下名称与x变量值一致的属性 target_func = getattr(utilities, x) # 传入参数调用该函数 res = target_func(var1, var2)
可选的鲁棒性优化
如果要避免传入的字符串不存在对应方法时抛出异常,可以给getattr()设置默认返回值,调用前先做校验:
- 给
getattr()传第三个参数作为属性不存在时的默认返回值 - 拿到返回结果后用
callable()校验是否为可调用的函数对象
示例代码:
target_func = getattr(utilities, x, None) if callable(target_func): res = target_func(var1, var2) else: print(f"utilities模块中无{x}对应的可调用方法")
注意:不要使用
eval()执行字符串拼接的方式实现该需求,会引入严重的安全风险,getattr()是该场景的官方标准实现方案。
内容的提问来源于stack exchange,提问作者nadermx
相关产品推荐
相关产品推荐

