如何在Python中将函数作为参数传递并返回函数名?
解决方案
其实这事儿挺简单的,Python里的函数对象自带一个__name__属性,专门用来存储函数的名称字符串,刚好能满足你获取函数名的需求。
直接看完整的实现代码:
def func1(x): return x**2 def main_function(func, x): # 获取传入函数的名称,同时调用函数得到计算结果 return func.__name__, func(x) # 测试调用 func_name, result = main_function(func1, 2) print(func_name) # 输出 'func1' print(result) # 输出 4
关键点说明
- 函数的
__name__属性:每个自定义函数都会自动拥有这个属性,它的值就是你定义函数时使用的名称字符串,比如这里func1的__name__就是'func1'。 - 参数名优化:我把
main_function的第一个参数改成了func而非func1,这样这个函数就更通用——不管你传入什么函数,它都能正常返回函数名和计算结果,而不是只能处理名叫func1的函数。当然你要是坚持用func1当参数名也没问题,只是通用性会差一些。
额外小提示
如果传入的是匿名函数(比如lambda x: x**2),它的__name__会是'<lambda>',这也是Python的预期行为哦。
内容的提问来源于stack exchange,提问作者lrh09
相关产品推荐
相关产品推荐

