📜  python 从字符串调用函数 - Python (1)

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

Python 从字符串调用函数

有时候我们需要在运行时根据字符串的内容来动态调用不同的函数,这就需要使用 Python 的反射机制。下面我们来介绍一下 Python 中如何从字符串调用函数。

eval 函数

eval 函数可以将字符串转换成 Python 表达式,并且执行它。例如:

x = 1
y = 2
result = eval('x + y')
print(result)  # 输出:3

但是需要注意的是,eval 函数存在安全隐患,因为它可以执行任意的 Python 代码。如果不受信的代码被传入,可能会带来严重的安全问题。

getattr 函数

getattr 函数可以根据字符串的内容获取对象的属性或方法。例如:

class MyClass:
    def my_func(self, x, y):
        return x + y

obj = MyClass()
result = getattr(obj, 'my_func')(1, 2)
print(result)  # 输出:3
globals 函数

globals 函数可以返回当前环境中定义的全局变量。我们可以根据变量名来调用函数。例如:

def my_func(x, y):
    return x + y

func_name = 'my_func'
func = globals()[func_name]
result = func(1, 2)
print(result)  # 输出:3
总结

以上就是 Python 从字符串调用函数的介绍。在实际的使用中,我们需要根据具体的需求来选择合适的方法,同时也要注意安全问题。