如何在Python中获取当前函数对象?
有没有办法获取我当前使用的函数 我在寻找实际的函数对象,而不是函数名如何在Python中获取当前函数对象?,python,Python,有没有办法获取我当前使用的函数 我在寻找实际的函数对象,而不是函数名 def foo(x,y): foo_again = <GET_CURRENT_FUNCTION> if foo_again == foo: print ("YES they are equal!") 这是可行的,但我不想手动编写函数名。相反,我想这样做 def func(x,y): for a in inspe
def foo(x,y):
foo_again = <GET_CURRENT_FUNCTION>
if foo_again == foo:
print ("YES they are equal!")
这是可行的,但我不想手动编写函数名。相反,我想这样做
def func(x,y):
for a in inspect.getfullargspec(<GET_CURRENT_FUNCTION>).args:
print (a, locals()[a])
定义函数(x,y):
对于inspect.getfullargspec().args中的参数:
打印(a,局部变量()[a])
实现这一点的一种方法是使用装饰器。下面是一个例子:
def passFunction(func):
@functools.wraps(func)
def new_func(*args, **kwargs):
return func(func,*args, **kwarsgs)
return new_func
@passFunction
def foo(f, x, y):
...
foo(x,y)
从中可以获得函数的名称
这里有一个可能不是最佳的解决方法,但它可以提供您预期的结果
def foo(x,y):
this_function = inspect.stack()[0].function
for a in inspect.getfullargspec( eval(this_function) ).args:
print(a, locals()[a])
print(this_function)
然后
我更新了问题写函数名有什么不好?我计划将这两行代码复制并粘贴到所有我想看到参数的函数中。所以我不想每次需要更改函数名。装饰师不是更好吗?看看
def foo(x,y):
this_function = inspect.stack()[0].function
for a in inspect.getfullargspec( eval(this_function) ).args:
print(a, locals()[a])
print(this_function)
foo('a','b')
>>>
x a
y b
foo