제목이 어리석은 것 같지만 정확하게 표현하는 법을 모르겠습니다. 죄송합니다.Python : eval의 전역 변수에 액세스하는 방법
(보안을 위해 RestrictedPython을 통해) 일부 사용자 코드를 평가해야하는 프로그램이 있으며 eval의 전역에 함수를 추가하여 eval, 예를 들어 몇 가지 디버그 정보를 인쇄 할 수 있습니다.) :
class UserException(Exception):
pass
def err(msg):
# ? how to get the globals variable in eval ?
A = globals().get('A', 'A not found')
return UserException("%s and A's value is %r" % (msg, A))
g = {
'err': err,
'A': None,
'__builtins__': {},
}
print eval('A or err("A not true")', g)
이이 resut 줄 것이다 :
A not true and A's value is 'A not found'
사용 '전역을()'여기 insde '잘못한다'는 잘못된 물론이다. 그러나 '오류'내부의 'g'값을 어떻게 얻을 수 있습니까?
예, 그게 내가 찾고있는 것입니다. inspect 모듈을 사용하여 동일한 효과를 얻습니다. – jayven