📌  相关文章
📜  python 从字符串名称中获取函数 - Python (1)

📅  最后修改于: 2023-12-03 15:19:07.119000             🧑  作者: Mango

Python 从字符串名称中获取函数

在Python中,我们常常需要动态地调用函数,同时我们有时候需要通过函数名称的字符串来获取函数本身,这时候就需要用到Python中的一些内置函数和方法了。本文将会介绍如何从字符串名称中获取函数。

使用eval()函数

eval()函数是Python中的一个内置函数,它可以将字符串作为Python代码来执行。这样,我们就可以通过字符串名称来获取函数。下面是一个简单的例子:

def func():
    print("Hello World!")

func_str = "func"

eval(func_str + "()")

这个例子中,我们定义了一个函数func()和一个字符串变量func_str,这个字符串变量存储了函数名称。我们通过将字符串变量与括号组合成函数调用的形式,使用eval()函数动态地调用了函数。

这种方法可以用于执行任何Python代码,但是也存在着一些潜在的安全隐患。因此,如果可以避免使用eval()函数,就尽量避免使用。

使用globals()函数

在Python中,每个模块都有一个全局命名空间,我们可以使用globals()函数获取这个命名空间中的所有全局变量和函数。

我们可以通过globals()函数获取函数的引用,然后再根据函数名称来调用函数。下面是一个示例:

def func():
    print("Hello World!")

func_str = "func"

func_ref = globals()[func_str]
func_ref()

在这个示例中,我们首先定义了一个函数func()和一个字符串变量func_strfunc_str变量存储了函数名称。

使用globals()函数获取全局命名空间中的变量和函数,然后将函数名称作为键来获取函数的引用。

最后,我们调用函数func_ref()来调用函数。

使用getattr()函数

在Python中,可以使用getattr()函数来获取对象的属性或方法。我们可以使用这个函数来获取函数的引用。

def func():
    print("Hello World!")

func_str = "func"

func_ref = getattr(__main__, func_str)
func_ref()

在这个示例中,我们首先定义了一个函数func()和一个字符串变量func_strfunc_str变量存储了函数名称。

使用getattr()函数获取模块中的函数,模块名称可以使用内置模块__main__表示,然后将函数名称作为第二个参数传递给getattr()函数。

最后,我们调用函数func_ref()来调用函数。

总结

以上就是从字符串名称中获取函数的三种方法。eval()函数可以执行任何Python代码,但是存在安全隐患,使用时需要小心。globals()函数可以获取全局命名空间中的变量和函数的引用,getattr()函数可以获取模块中的函数的引用。在实际使用中,可以根据具体情况选择合适的方法来获取函数的引用。