You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将变量传入exec语句?Python exec拼接变量不生效如何解决

问题解决方案

你现有代码的错误原因有两个:

  1. exec(do) 写在了for循环外部,循环结束后只会执行一次,无法实现循环打印5次的需求
  2. 你构造的do字符串没有提前代入循环变量i的取值,exec执行时会把image_label+i识别成字符串字面量拼接操作,自然不会输出你想要的结果

最优方案(完全不需要用exec,避免安全风险)

分两种场景对应写法:

  • 场景1:image_label是固定字符串前缀,不需要读取对应变量:
for i in range(5):
    print(f"image_label{i}")
  • 场景2:需要读取提前定义好的image_label0~image_label4变量的值:
for i in range(5):
    # 从全局变量字典中按名称取对应变量
    print(globals()[f"image_label{i}"])

必须使用exec的修改方案

如果场景限制必须用exec,调整代码如下即可:

for i in range(5):
    # 构造执行语句时提前用f-string代入i的取值
    do = f"print(image_label{i})"
    exec(do)

如果担心exec的作用域问题导致变量读取异常,可以手动传入局部变量字典:

for i in range(5):
    do = "print(f'image_label{i}')"
    # 手动把当前的i传入exec的执行上下文
    exec(do, {"i": i})

内容的提问来源于stack exchange,提问作者Aliman Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:36:03