如何在C++中输入已有变量名并在函数中使用该变量?
当然能做到!这种根据字符串动态获取变量的需求挺常见的,我拿Python来给你几个靠谱的实现方案:
1. 全局变量用
globals() 字典取 如果你的变量是全局作用域里的,直接用globals()这个内置字典就能拿到,它存储了所有全局变量的键值对:
a = 42 # 预先定义好的全局变量 def use_variable(var_name): # 从全局命名空间里捞变量,用get避免KeyError target_var = globals().get(var_name) if target_var is not None: print(f"变量{var_name}的值是:{target_var}") else: print(f"找不到名为{var_name}的全局变量哦!") # 调用时传变量名的字符串就行 use_variable("a") # 输出:变量a的值是:42
2. 局部变量用
locals() 字典 如果变量在某个函数的局部作用域里,就用locals(),不过得注意它的作用域范围:
def outer(): b = "我是局部变量" def inner(var_name): # 从当前局部作用域取变量 target_var = locals().get(var_name) print(f"变量{var_name}的值是:{target_var}") inner("b") # 输出:变量b的值是:我是局部变量 outer()
小提醒:locals()在不同Python版本里的行为可能有点小差异,尽量在变量所在的作用域内直接使用,别跨层瞎搞~
3. 对象属性用
getattr() 更规范 如果你的"变量"其实是某个对象的属性,那用getattr()才是正经做法,比直接操作字典优雅多了:
class MyData: def __init__(self): self.c = 1000 my_obj = MyData() def use_obj_attr(obj, attr_name): try: attr_value = getattr(obj, attr_name) print(f"对象的属性{attr_name}的值是:{attr_value}") except AttributeError: print(f"这个对象没有{attr_name}这个属性哦!") use_obj_attr(my_obj, "c") # 输出:对象的属性c的值是:1000
最后碎碎念几句
- 这种动态取值的方式尽量少用,会让代码变得难读难维护,静态检查工具也没法帮你排查问题。
- 一定要做异常处理或者空值判断,不然输入个不存在的变量名直接就崩了,太尴尬。
内容的提问来源于stack exchange,提问作者Jani
相关产品推荐
相关产品推荐

