使用__name__
属性获取函数名称。
Python如何获取函数名
在Python中,我们可以使用内置的__name__
属性来获取函数名,这个属性通常用于判断一个函数是作为模块导入还是直接get="_blank">运行的,当我们直接运行一个函数时,__name__
属性的值为'__main__'
,而当我们将一个函数作为模块导入时,__name__
属性的值为模块名,下面我们通过一个实例来详细了解如何使用__name__
属性获取函数名。
我们创建一个名为my_module.py
的文件,内容如下:
def my_function(): pass if __name__ == '__main__': print("This is my_function")
在这个例子中,我们定义了一个名为my_function
的函数,并在模块级别使用了if __name__ == '__main__':
判断语句,当直接运行my_module.py
时,会执行这个判断语句,从而打印出"This is my_function"。
接下来,我们在另一个文件中导入my_module
,并调用my_function()
:
import my_module my_module.my_function()
运行这段代码,会输出"This is my_function",这说明我们成功地获取到了函数名。
如何获取当前正在执行的函数名呢?我们可以在调用函数的地方添加一个特殊的参数functools.partial(print, f'Called from {inspect.currentframe().f_code.co_name}')
,这样就可以在调用函数时打印出当前正在执行的函数名,下面是一个示例:
import functools import inspect from my_module import my_function def call_my_function(func=my_function): func() functools.partial(print, f'Called from {inspect.currentframe().f_code.co_name}')() call_my_function()
运行这段代码,会输出"Called from call_my_function",这说明我们成功地获取到了当前正在执行的函数名。
问题与解答:
1、如何获取模块中的其他函数名?
答:可以使用dir()
函数列出模块中的所有属性和方法,然后筛选出其中的函数名。
import my_module print([name for name in dir(my_module) if callable(getattr(my_module, name))])
2、如何获取类中的其他方法名?
答:可以使用相同的方法,即使用dir()
函数列出类的所有属性和方法,然后筛选出其中的方法名。
class MyClass: def method1(self): pass def method2(self): pass print([name for name in dir(MyClass) if callable(getattr(MyClass, name))])
3、如何获取当前脚本的其他函数名?
答:可以使用相同的方法,即使用dir()
函数列出当前脚本的所有属性和方法,然后筛选出其中的函数名。
import sys as _sys import os as _os import math as _math print([name for name in dir(globals()) if callable(getattr(globals(), name)) and not name.startswith('_')])
评论(0)