对于关于人工智能的学校项目,我需要能够将函数名称连接到另一个函数,例如:
def b_test(x):
return x+1
def a_test(x):
return x
variable = "b"
variable+= "_test"
a_test = variable
我想Python希望使用名称" b"作为函数a_test的新名称/别名,而不是使用b_test作为新名称。
那么我如何强制python看看b意味着什么而不仅仅是使用它呢?
修改
我想做的是:
我的变量variable
中包含字符串b
,当我在代码a_test(x)
中使用时,我需要返回x + 1(函数的返回值{{1} }})。所以我添加字符串" _test"变量因此它是" b_test"。
我可以通过编码
来做到这一点b_test
但我不会只将a_test连接到b_test,它可能是c_test或d_test,这就是我需要使用变量的原因。
答案 0 :(得分:0)
您的示例应该可以正常工作,但它不会反映屏幕截图中的实际代码和错误。在屏幕截图中,您试图从mlp_functions模块获取ChosenFunction,该模块没有该属性,因此是AttributeError。要使用str名称从模块获取属性,您需要使用getattr
,如:
mlp_functions.logistic_function = getattr(mlp_functions, ChosenFunction)
答案 1 :(得分:0)
首先,您需要构造函数名称(来自您的变量)并检索模块名称,以便您可以在所需的变量中加载python函数对象。
以下是代码:
def b_test(x):
return x + 1
def a_test(x):
return x
def main():
# Construct function name
test_option = "b" # "a"
test_name = test_option + "_test"
# Retrieve function module
import os
import importlib
module_name = os.path.splitext(os.path.basename(__file__))[0]
module = importlib.import_module(module_name)
# Retrieve function
test = getattr(module, test_name)
# Debug information
if __debug__:
print ("Current file: " + str(__file__))
print ("Module name: " + str(module_name))
print ("Module: " + str(module))
print ("Test function name: " + str(test_name))
print ("Test function: " + str(test))
# Execute function
result = test(1)
print ("Result: " + str(result))
if __name__ == '__main__':
main()
一些重要的注释:
test
变量来执行getattr
函数对文件名和模块有点棘手,因此如果修改此代码,您可能希望修改函数模块的计算方式。