在 Python 中根据函数的字符串名称调用函数
本教程将介绍如何在 Python 中根据函数的字符串名称调用函数。
这个问题的用例是将一个模块或类中的函数赋值到一个变量中,不管它有什么用途。
在 Python 中使用 getattr()
将一个函数赋值到一个变量中
函数 getattr()
从对象或模块中返回一个属性值。这个函数有两个必要的参数,第一个参数是对象或模块的名称,第二个参数是一个包含属性名称的字符串值。
有关的属性可以是一个变量、一个函数或一个子类的形式。
假设我们有一个名为 User
的类,具有给定的属性:
# Filename: user.py
class User():
name = 'John'
age = 33
def doSomething():
print(name + ' did something.')
现在,我们想把属性函数 doSomething()
存储到一个方法中并调用它。要做到这一点,我们将使用 getattr()
函数。
from user import User as user
doSomething = getattr(user, 'doSomething')
doSomething(user)
输出:
John did something.
现在,函数 user.doSomething()
被封装在变量 doSomething
中。这样一来,调用函数时就不需要指定对象 user
了。
在 Python 中使用 locals()
和 globals()
从一个字符串中调用一个函数
另一种从字符串调用函数的方法是使用内置函数 locals()
和 globals
。这两个函数返回一个 Python 字典,表示当前给定源代码的符号表。
这两个函数的区别在于命名空间。如名称所示,locals()
返回包括局部变量的字典,globals()
返回包括局部变量的字典。函数名也会以字符串的格式返回。
让我们将这些方法作为示例。声明两个随机函数,并使用两个内置函数调用它。
def myFunc():
print('This is a function.')
def myFunc2():
print('This is another function.')
locals()['myFunc']()
globals()['myFunc2']()
输出:
This is a function.
This is another function.
总而言之,根据字符串来调用一个函数,需要使用 getattr()
、locals()
和 globals()
等函数。getattr()
会要求你知道函数所在的对象或模块,而 locals()
和 globals()
会在自己的范围内定位函数。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn相关文章 - Python Function
- 在 Python 中退出函数
- Python 中的可选参数
- 在 Python 中模仿 ode45() 函数
- Python 中的 zip() 函数
- Python 中的 filter() 方法和 Lambda 函数
- Python 中的 maketrans 函数