수 없습니다. * 자세한 이유는 Python language reference에서 논의되었지만 기본적으로 printL(A_minus_B)
으로 전화 할 때 파이썬이 수행하는 작업은 A_minus_B
이라는 레이블이 지정된 값을 사용하고 동일한 레이블을 사용하는 xlist
이라는 새 레이블을 만듭니다. 이 시점에서 레이블 xlist
은 다른 레이블 A_minus_B
에 실제로 연결되어 있지 않으며 실제로는 A_minus_B
또는 xlist
으로 레이블 된 값 또는 레이블을 붙이기 위해 사용 된 이름과 아무런 관련이없는 값입니다.
* 글쎄, 당신 수, ... 당신은 기본적으로 당신이 printL(A_minus_B)
전화 소스 코드의 조각을 읽고 변수를 추출하는 파이썬을 말할 것이다 어떤 깊은 "파이썬 부두"를 사용하여 거기에서 이름. 일반적으로 그렇게하지 않는 것이 좋습니다 (초보자가 아니기 때문에가 아니라 프로그램을 잘못된 방법으로 설계했기 때문입니다). 그러나 디버깅은 아마도 적절한 경우 중 하나입니다.
import inspect, pprint
def print_values(*names):
caller = inspect.stack()[1][0]
for name in names:
if name in caller.f_locals:
value = caller.f_locals[name]
elif name in caller.f_globals:
value = caller.f_globals[name]
else:
print 'no such variable: ' + name
# do whatever you want with name and value, for example:
print "****************************"
print name
print (" entries : "),len(value)
print value
print "****************************"
캐치는이 함수를 호출 할 때, 당신은 그것에게 이름이 인쇄하고자하는 변수가 아닌 변수 자체의을 통과해야한다는 것입니다 : 여기 한 가지 방법이다. 따라서 print_values('A_minus_B')
이 아니라 print_values(A_minus_B)
으로 전화하십시오. 여러 개의 이름을 전달하여 모두 인쇄 할 수 있습니다 (예 : print_values('A_minus_B', 'C_minus_D', 'foo')
). 그것을 할 수
그것은 도움이 될 것입니다. –
죄송합니다. 이것은 파이썬 2.7에 대한 것입니다 –
복제 : http://stackoverflow.com/questions/592746/how-can-you-print-a-variable-name-in-python – heltonbiker