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

如何通过函数传入的字符串参数获取其他文件中的变量?

如何通过函数传入的字符串参数获取其他文件中的变量?

嘿,我完全懂你遇到的困扰!你在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:19:34