获取python变量的名称

获取python变量的名称,python,python-2.7,Python,Python 2.7,并将其用作f(“s”,s),但这需要我输入两个参数,这更麻烦。您可以这样做: def f(name,value) print "%s=%s"%(name,str(value)) def func(**kwargs): 对于输入kwargs: 打印值为“%”的“Var”(键,kwargs[key]) >>>func(假设=2,qqq=3) 带值Var 带值Var 如果函数只有一个参数;那么你可以这样做 def func(**kwargs): for key in kwargs:

并将其用作
f(“s”,s)
,但这需要我输入两个参数,这更麻烦。

您可以这样做:

def f(name,value)
   print "%s=%s"%(name,str(value))
def func(**kwargs):
对于输入kwargs:
打印值为“%”的“Var”(键,kwargs[key])
>>>func(假设=2,qqq=3)
带值Var
带值Var

如果函数只有一个参数;那么你可以这样做

def func(**kwargs):
    for key in kwargs:
        print 'Var <%s> with value <%s>' % (key, kwargs[key])

>>> func(say=2, qqq=3)
    Var <say> with value <2>
    Var <qqq> with value <3>
在您的情况下,传递参数(实际参数)名称在传递到函数(形式参数)后将不可用。

您可以(可能)使用模块完成此操作


可能有很多我不知道的警告,但至少调用
some\u func(hello)
应该打印
some\u func(hello)
,您可以继续使用字符串提取方法提取“变量名”。

我不确定这是否值得,但是,使用带有位置参数的简单函数调用的框架中的信息,可以执行以下操作:

import traceback
def some_func(x):
    stack = traceback.extract_stack()
    calling = stack[-2]
    func_call_str = calling[-1]
    print func_call_str
输出:
在不知道名称的情况下,如何打印它?当您将参数传递给函数时,会传递一个值。该函数无法知道与该值关联的名称。@iCodez我明白了,这太糟糕了……为什么要这样做?为了调试,我可以编写一个函数,比如before(s),after(s),并将其放在新语句的前后,这可以节省一些输入。这并不能回答问题:
say
qqq
是键,而不是变量名。
def f(s):
    var, val = locals.items()[0]  # `var` will always have value 's', so no much difference here.
    print "{} = {}".format(var, val)
import traceback
def some_func(x):
    stack = traceback.extract_stack()
    calling = stack[-2]
    func_call_str = calling[-1]
    print func_call_str
import inspect

def hello(s1, s2, s3, s4):
    args = inspect.getargspec(hello).args
    line = inspect.getouterframes(inspect.currentframe())[1][4][0]
    actual_args = map(str.strip, line[line.index('(')+1: line.index(')')].split(','))
    for x, y in zip(args, actual_args):
        print "value of {} is {}".format(y, locals()[x])

a, b, c, d = 1, 2, 3, 4
hello(a, b, c, d)
value of a is 1
value of b is 2
value of c is 3
value of d is 4