Python中如何拼接字符串生成变量名并获取对应变量值传入函数?
解决方案
你原来的写法只是拼接出了变量名的字符串形式,Python不会自动将字符串映射为对应变量的值,可参考以下两种方案修改:
方案1:优先推荐:用字典存储数值(更易维护、更安全)
直接把所有编号对应的数值存在字典中,避免使用动态变量名,这是Python官方推荐的实现方式:
# 定义字典存储所有lab值 lab_values = { 19: 100 - 50, 20: 200 - 20, # 其他编号的对应值也按此格式添加 } y = 1 while y < 21: # 存在对应编号时才传入,避免KeyError if y in lab_values: bundleRun(lab_values[y]) y += 1
方案2:如果不想修改原有变量定义,通过作用域字典获取变量值
如果一定要保留你现在的labXX变量定义,可以通过globals()获取全局作用域的变量字典,或用locals()获取当前局部作用域的变量字典,用字符串形式的变量名取对应值:
y = 1 while y < 21: var_name = f'lab{y}' # 先判断变量是否存在,避免报错 if var_name in globals(): bundleRun(globals()[var_name]) y += 1
注意:如果你的
labXX变量是定义在某个函数内部,把上面代码里的globals()替换成locals()即可。
内容的提问来源于stack exchange,提问作者Paul Toal
相关产品推荐
相关产品推荐

