Python中如何执行由字符串拼接生成的可运行代码?
动态调用对象指定名称方法的实现方案
- 最优方案:使用Python内置的
getattr函数实现,无安全风险,是官方推荐的动态属性/方法获取方式
实现代码示例:
如需避免方法不存在抛出的# 从pyb对象中获取名称为abc变量值的方法 target_method = getattr(pyb, abc) # 调用方法并传入参数2020 res = target_method(2020)AttributeError,可以添加默认返回值:target_method = getattr(pyb, abc, None) if target_method: res = target_method(2020) else: # 自定义方法不存在时的处理逻辑 pass - 不推荐方案:通过
eval执行拼接后的字符串
虽然代码eval(f"pyb.{abc}(2020)")可以实现需求,但存在极高的安全隐患:如果abc变量的值可控,攻击者可以构造恶意字符串执行任意代码,造成数据泄露、系统损坏等严重后果,生产环境绝对禁止使用该方式。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

