필자는 필자가 필요에 따라 가져온 일부 지원 라이브러리에 일부 헬퍼 함수를 추가했습니다. 일부 로깅과 문자열 생성을 단순화하기 위해 함수가 호출되는 범위에 대해 globals()에 액세스해야하는 몇 가지 함수가 있습니다. 그러한 함수 중 하나가 format_vars이며, globals() dict를 기본적으로 문자열 형식 메서드의 즉석 인수로 사용하려고 시도합니다.inspect를 사용하지 않고 모듈을 특정 범위로 가져 오기
def format_vars(s, vars=None):
"""Use .format() on a string while providing a dictionary or globals() by default.
Big Fat Warning: globals() is global to module, not script"""
if not vars:
vars = globals()
return s.format(**vars)
이 내가 불행하게도 함수에서 소스 코드를 생성 한 후이를 실행해야 함을 활용, 매우 유용합니다. 나는 함수 정의 밑의 모듈 코드에서 다음을 가지고있다.
내가 모듈을 포함해야이 기능을 사용하고자하는 스크립트에서FORMAT_VARS_SOURCE = inspect.getsource(format_vars)
한 다음 다음을 수행 :이 일을 더 적절한 방법이있는 경우
exec(supportlib.FORMAT_VARS_SOURCE)
내 질문은?
그래도 질문에 답할 수는 없지만 [logging] (http://docs.python.org/2/library/logging.html) 모듈은 최소한 로그의 범위를 필요로합니다. 메시지. – 2rs2ts