Как получить значения параметров вызова функции / метода?
Это для инструмента отладки, и он будет использоваться в сценарии, подобном этому:
import inspect
def getCallParameter():
stack = inspect.stack()
outer = stack[1] #This is an example, I have a smarter way of finding the right frame
frame = outer.frame
print("") #print at least a dict of the value of the parameters, and at best, give also wich parameter are passed explicitely (e.g. with f(2, 4) an input of this kind : "a=2, b=4, c=5(default)")
def f(a, b=4, c=5):
a+=b+c
getCallParameters()
return a
Примечание. Мне известно о inspect.formatargsvalues()
, но оно не соответствует моим требованиям, поскольку в примере f(2,4)
было бы напечатано «a = 11, b = 4, c = 5)»
То, о чем я думаю, - это смотреть на внешнем кадре переданные значения. Это не проблема, если я не получу исходное состояние переданного объекта, пока я получаю объекты, изначально привязанные к параметрам переменной.
Пример:
# with f(4)
def f(a, b=4, c=[])
c.append(5)
getCallParameters() # a=4, b=4, c=[5] is ok even if I would have preferred c=[]
c = [4]
getCallParameters() # here, I exepect c=[5] or c=[]