调用带有动态参数的函数

问题描述

如果我有一个存储在变量中的函数名称,如何在函数内部知道用于调用它的变量的名称?

例如:

var_name = function1
var_name("3")

def function1(self,params=""):
  print("the parameter is " + params + "called by" + VARIABLENAME)

我会有类似的输出

该参数为3,由var_name调用

感谢支持

解决方法

不幸的是,您无法在python上执行此操作,但是您可以执行以下操作来获取当前函数:

import inspect

def function1(n):
  print("the parameter is " + n + " called by " + inspect.getframeinfo(inspect.currentframe()).function)

function1("3")
,

您可以标识调用函数,并使用globals()查找所有定义的函数:

import inspect
import types

def function1(n):
    alias = getCallingAliases(inspect.getframeinfo(inspect.currentframe()).function)
    print("the parameter is " + n + " called by " + alias)

def getCallingAliases(realFn):
    for k,v in globals().items():
        if isinstance(v,types.FunctionType):
            # k == function or alias
            # v == original function
            aliasName = v.__name__
            if realFn != k and realFn == aliasName:
                return k
    return '<unknown>'

var_name = function1
var_name("3")

出局:

the parameter is 3 called by var_name

注意:这不容易出错,可能需要根据您的需要进行调整(关于类,从其他模块导入的功能……)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...