反正有没有在python中获取函数的传递参数的名称?

Moh*_*imi 2 python

我想知道传递给函数时局部变量名是什么.我不确定这是否可行.让我们考虑这个例子:

功能定义:

def show(x):
  print(x)
Run Code Online (Sandbox Code Playgroud)

用法:

a = 10
show(a)
Run Code Online (Sandbox Code Playgroud)

这打印10.但我喜欢打印"a = 10".这在python中可能吗?

bgp*_*ter 6

我喜欢这个问题的答案在 Python 编程常见问题解答中找到的

\n\n
\n

与获取在门廊上发现的那只猫的名字相同的方式: \n 猫(对象)本身无法告诉您它的名字,并且它 \n 并不真正关心 \xe2\x80\x93所以找出它\xe2\x80\x99s 的唯一方法是询问你所有的邻居(命名空间)它\xe2\x80\x99s 是否是他们的猫(对象)...

\n\n

....如果您\xe2\x80\x99 会发现它\xe2\x80\x99 有很多名字,或者根本没有名字,请不要感到惊讶!

\n
\n


Mar*_*ers 5

不,您无法知道用于将值传递给函数的局部变量的名称是什么。

这无论如何都是一个不可能完成的任务。以下示例中的变量名称是什么?

arguments = ('a', 1, 10)
somefunction(*(arguments[:2] + [10]))
Run Code Online (Sandbox Code Playgroud)

这里我们传入 3 个参数,其中两个取自我们之前定义的元组,还有一个文字值,所有这三个参数都是使用变量参数列表语法传入的。

  • @JonClements:您还可以尝试使用“sys._getframe(1)”和代码框架的反编译..*颤抖*。*不*适合胆小的人,我不会探索这个,除非OP有一个*该死的*充分的理由这样做。 (2认同)

NPE*_*NPE 5

不完全是这样的.但是,您可以实现类似的功能:

def show(**kwargs):
  print(', '.join('%s=%s' % kv for kv in kwargs.items()))

show(a=20)
Run Code Online (Sandbox Code Playgroud)