Python如何获取变量名存储在另一变量中的对应变量值
Python动态获取同名变量值的实现方案
推荐方案:使用字典存储商品价格(最优实践)
这是Python处理键值映射关系的标准写法,安全易维护,完全规避动态访问变量的各类隐患。你只需要把原本单独定义的商品价格变量调整为字典结构即可:
# 用字典存储商品名称和对应价格 price_map = { 'Lego': 40000 } prodlist = price_map.keys() # 直接用字典的键作为商品列表,无需单独维护 tx = 1.13 product = input("What do you want to buy? [Lego], [Something]") if product in prodlist: cost = price_map[product] # 直接通过商品名从字典取对应价格 price = cost * tx print("Price for ", product, " is = ", price) else: print("Product not found :(")
后续新增商品只需在price_map里新增键值对即可,不用同时维护变量和商品列表两处逻辑,代码更简洁。
可选方案:通过globals()动态获取全局变量(不推荐)
如果你确实需要直接访问已定义的全局变量,可以用Python内置的globals()函数,它会返回当前所有全局变量组成的字典,可直接通过变量名字符串取值:
Lego = 40000 prodlist = ['Lego'] tx = 1.13 product = input("What do you want to buy? [Lego], [Something]") if product in prodlist: cost = globals()[product] # 动态获取对应全局变量的值 price = cost * tx print("Price for ", product, " is = ", price) else: print("Product not found :(")
该方式存在安全风险,如果用户输入你代码里其他全局变量的名称,会直接获取到对应的值,同时代码可读性差、后期维护成本高,非特殊场景不建议使用。
内容的提问来源于stack exchange,提问作者Gaston GODDARD
相关产品推荐
相关产品推荐

