如何从变量中调用函数? (Python)
Posted
技术标签:
【中文标题】如何从变量中调用函数? (Python)【英文标题】:How do you call a Function from a Variable? (Python) 【发布时间】:2017-10-24 15:34:56 【问题描述】:在您声明重复之前 我查看了以下内容:python function call with variable
Calling a function of a module from a string with the function's name
Executing a function by variable name in Python
https://ubuntuforums.org/showthread.php?t=1110989
还有更多,但没有运气。
我正在开发一款游戏。现在我正在开发 SAVE/LOAD 功能,但我一无所获。
我想从另一个 py 或 txt 文件中获取一段文本,并让我的主 py 文件读取它,然后调用函数取决于第二个文件中的文本字符串。
脚本1:
#imports
from script2 import SaveCode
#Code
def Test():
print('Hello, World!')
callable(SaveCode)
脚本2:
SaveCode = Test()
这行不通。有人可以帮帮我吗?
【问题讨论】:
请添加回溯。callable
只是一个测试是否可以调用某些东西。它是内置的。
Callable() 返回 True 或 False。它不执行函数。
有有一种方法可以通过字符串'Test()'
告诉Python 执行Test()
函数,但这确实不是 一个好主意当有更清洁、更安全的替代方案时,以这种方式组织您的代码。
您创建一个数据文件,其中包含您想要的数据。当程序启动时,它会读取数据,以便将您的关键变量设置为其初始值。当你想保存游戏时,你将这些关键变量的当前值写入文件。如果数据很简单,您只需使用简单的文本文件即可。但是如果事情很复杂,你可以使用某种结构化的数据文件,比如 JSON。另一种选择是使用 pickle
模块,它可以保存各种 Python 对象并将它们重新加载。
【参考方案1】:
除非您使用 eval
或 exec
which isn't recommended 来评估该字符串,否则这将不起作用。
据我所知,您在 script2 中有一个字符串,并希望根据该字符串在 script1 中执行一个函数。你可以做的是定义一个字典,其中包含你映射到你想要调用的函数的字符串:
在script1中:
#imports
from script2 import SaveCode
#Code
def Test():
print('Hello, World!')
functions =
'Test': Test
# Assuming that SaveCode = 'Test' in your second script,
# look up the corresponding function
function_to_run = functions[SaveCode]
# and call it
function_to_run() # prints Hello, World!
在script2中:
SaveCode = 'Test'
【讨论】:
Traceback(最近一次调用最后):文件“C:\csc1AB\PROJECTS_\TEST\script1.py”,第 3 行,在functions = ...
行
我将您答案中的所有内容都复制到了 2 个脚本中
@ChaseBarnes:我在那个答案中没有看到任何内容说你应该替换这两个脚本。无论如何,这不是本意。
"#假设你的第二个脚本中SaveCode = 'Test',查找对应的函数#并调用它"以上是关于如何从变量中调用函数? (Python)的主要内容,如果未能解决你的问题,请参考以下文章
如何在MATLAB中调用(运行)“用Python写成的函数或脚本”