如何在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