如何从一个变量调用一个函数?(Python)
如何从一个变量调用一个函数?(Python)
在你声称为重复之前:\n我已经查看了以下内容:
\npython function call with variable\nCalling a function of a module from a string with the function\'s name\nExecuting a function by variable name in Python\nhttps://ubuntuforums.org/showthread.php?t=1110989\n还有很多其他的,但是没有成功。\n我正在开发一个游戏。目前我正在处理“保存/加载”功能,但是我一无所获。\n我想从另一个.py或.txt文件中获取一段文本,然后让我的主.py文件读取该文本,并根据第二个文件中的文本字符串调用一个函数。\n脚本1:\n
#导入 from script2 import SaveCode #代码 def Test(): print('Hello, World!') callable(SaveCode)
\n脚本2:\n
SaveCode = Test()
\n这样做行不通。有人可以帮帮我吗?
问题的原因是在script1中没有定义functions字典。解决方法是在script1中定义一个包含字符串和对应函数的字典,并根据给定的字符串查找相应的函数并调用。
文章整理如下:
在Python中,如果你想根据一个变量来调用一个函数,这是不会起作用的,除非你使用eval
或exec
来评估这个字符串,但这并不被推荐。根据我的理解,你在script2中有一个字符串,并希望根据这个字符串在script1中执行一个函数。你可以这样做,定义一个包含你想要调用的函数的字符串的字典:
在script1中:
#导入 from script2 import SaveCode #代码 def Test(): print('Hello, World!') functions = { 'Test': Test } # 假设在你的第二个脚本中SaveCode = 'Test', # 查找对应的函数 function_to_run = functions[SaveCode] # 并调用它 function_to_run() # 输出 Hello, World!
在script2中:
SaveCode = 'Test'
运行结果会出现以下错误信息:
Traceback (most recent call last): File "C:\csc1AB\PROJECTS_\TEST\script1.py", line 3, in <module> from script2 import SaveCode File "C:\csc1AB\PROJECTS_\TEST\script2.py", line 1, in <module> functions[SaveCode]() NameError: name 'functions' is not defined
你在第一个脚本中缺少了`functions = {...`这一行。
我将你回答中的所有内容都复制到了两个脚本中。
请阅读回答中的注释。
这个代码中的注释只是表示我假设你在script2中有一个名为`SaveCode`的变量,其值为`'Test'`。无论如何,我更新了代码,展示了script1和script2的内容。
然后呢?你还是遇到了这个异常吗?当我回到我的桌子上时,我会更新我的回答,以使其更清晰。
代码中的注释意味着我假设你的script2中有一个名为`SaveCode`的变量,其值为`'Test'`。无论如何,我更新了代码,展示了script1和script2的内容。