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

如何将字符串形式的变量名转为可用变量并输出对应值?

动态获取变量值的解决方案

原始代码

import numpy
import importlib

urls_1 =["a"]
urls_2 =["b"]
urls_3 =["c"]
urls_4 =["d"]
urls_5 =["e"]
urls_6 =["a"]
urls_7 =["b"]
urls_8 =["c"]
urls_9 =["d"]
urls_10 =["e"]

for i in range(1, 10):
    urls_1 = "a"
    urls_2 = "b"
    urls_3 = "c"
    urls_4 = "d"
    urls_5 = "e"
    n = 0+i
    urls_1 = ("urls_%s "%(n))
    print(urls_1)

问题说明

当前代码里,urls_1 = ("urls_%s "%(n))只是把变量名以字符串形式赋值,输出的是urls_1 、urls_2 这类文本,无法拿到对应变量中的实际值。期望输出为:

a
b
c
d
e
a
b
c
d
e

解决方法

方法1:通过globals()动态获取变量

利用globals()字典获取全局作用域中的变量,根据字符串形式的变量名拿到对应值:

import numpy

urls_1 =["a"]
urls_2 =["b"]
urls_3 =["c"]
urls_4 =["d"]
urls_5 =["e"]
urls_6 =["a"]
urls_7 =["b"]
urls_8 =["c"]
urls_9 =["d"]
urls_10 =["e"]

for i in range(1, 10):
    var_name = f"urls_{i}"
    # 获取对应变量的列表,并取出第一个元素
    target_value = globals()[var_name][0]
    print(target_value)

注:globals()[var_name]会根据字符串找到对应的全局变量,比如i=1时拿到urls_1列表,取索引0的元素就是"a"。

方法2:改用列表存储(推荐)

直接将所有目标值存入列表,避免动态变量名的繁琐,代码更易读维护:

# 直接定义包含所有目标值的列表
url_items = ["a", "b", "c", "d", "e", "a", "b", "c", "d", "e"]

# 遍历前9个元素(对应原循环的1-9次)
for item in url_items[:9]:
    print(item)

如果需要复用基础序列,也可以这样写:

base_urls = ["a", "b", "c", "d", "e"]
# 重复两次基础序列,取前9个元素
for item in (base_urls * 2)[:9]:
    print(item)

内容的提问来源于stack exchange,提问作者Mahan Tehrani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:15:12