如何通过函数传入的字符串参数获取其他文件中的变量?
如何通过函数传入的字符串参数获取其他文件中的变量?
嘿,我完全懂你遇到的困扰!你在ImporterFile.py里预先定义了变量x="hii!!",原本以为通过函数传入变量名再重新导入就能拿到对应值,但结果却报错说string不存在,对吧?
问题根源在哪?
你写的from ImporterFile import (string)这行代码里,Python会把string当作固定的变量名去ImporterFile.py里查找,而不是你传入的参数值对应的变量名。举个例子,当你调用grab(x)时,实际传入的是x的值"hii!!",但Python还是会去模块里找叫string的变量,这显然不存在,所以才会报错。
两种靠谱的解决方法
方法1:导入整个模块,用getattr动态获取变量
这种方式最直接,先导入整个ImporterFile模块,再通过getattr函数根据字符串形式的变量名拿到对应值:
import ImporterFile def grab(var_name): # 传入变量名的字符串,从模块中获取对应变量 return getattr(ImporterFile, var_name) # 注意这里要传变量名的字符串"x",而不是变量x本身 result = grab("x") print(result) # 会输出:hii!!
方法2:用importlib实现更灵活的动态导入
如果你的模块路径比较复杂,或者需要动态切换不同模块,可以用Python内置的importlib模块:
import importlib def grab(module_name, var_name): # 动态导入指定模块 target_module = importlib.import_module(module_name) # 从模块中获取指定变量 return getattr(target_module, var_name) # 传入模块名和变量名的字符串 result = grab("ImporterFile", "x") print(result) # 输出:hii!!
小提醒
你原来调用grab(x)是把变量x的实际值传进去了,但我们需要的是变量名的字符串(也就是"x"),所以调用函数时一定要传字符串形式的变量名哦~
备注:内容来源于stack exchange,提问作者rhhen122
相关产品推荐
相关产品推荐

