首页 > 解决方案 > 如何使用字符串定义函数名

问题描述

我试图创建一个更动态的程序,在其中我根据变量字符串定义函数的名称。

尝试使用如下变量定义函数:

__func_name__ = "fun"

def __func_name__():
  print('Hello from ' + __func_name__)

fun()

想要这个输出:

Hello from fun

我发现的唯一示例是: 如何使用 python 从字符串定义函数

标签: pythonpython-3.x

解决方案


您可以更新globals

>>> globals()["my_function_name"] = lambda x: x + 1
>>> my_function_name(10)
11

但通常使用具有相关功能的字典更方便:

my_func_dict = {
    "__func_name__" : __func_name__,
}

def __func_name__():
  print('Hello')

然后使用 dict 使用名称作为键来恢复功能:

my_func_dict["__func_name__"]()

推荐阅读