파이썬에서 compile()에 해당하는 함수를 만들려고하지만 원래 문자열을 다시 얻을 수 있습니다. 모호성을 없애기 위해 comp()와 decomp()의 두 함수를 호출 해 봅시다. 즉Python에서 compile()을 되돌릴 수있는 버전
a = comp("2 * (3 + x)", "", "eval")
eval(a, dict(x=3)) # => 12
decomp(a) # => "2 * (3 + x)"
반환 된 문자열 일 필요는 없다이다 동일 ("2 * (3 + X)"허용 될 수있다),하지만 근본적 있어야 같은 ("2 * X + 6 "은 아닐 것이다). 컴파일에 의해 반환 된 코드 객체에 속성을 설정
- :
는 여기에 내가 하지 작업을 수행 것을 시도했다입니다. 코드 객체에 사용자 정의 속성을 설정할 수 없습니다.
- 서브 클래 싱 코드이므로 속성을 추가 할 수 있습니다. 코드는 하위 클래스화할 수 없습니다.
- 코드 개체를 원래 문자열에 매핑하도록 WeakKeyDictionary를 설정합니다. 코드 객체는 약하게 참조 될 수 없습니다.
여기 문제, 작업을 수행 내용은 다음과 같습니다
- 원래의 코드 문자열에 전달 파일 이름이 컴파일하는(). 그러나 실제로 파일 이름을 유지할 수있는 능력이 없어졌습니다.
- 코드 개체를 문자열에 매핑하는 실제 사전 보관. 컴파일이 거의 발생하지 않기 때문에 메모리가 누수됩니다. 현재 사용중인 경우에는 받아 들일 수 있습니다. gc.get_referrers를 통해 주기적으로 키를 실행할 수 있었고 죽은 것들을 죽일 수있었습니다.
, 요점은 무엇인가? –