2017-03-14 15 views
1

파이썬에서 네임 스페이스 개념을 탐색 중이므로 다음을 설명 할 수 없습니다. builtins을 다시로드해도 효과적으로 모듈이 다시로드되지 않습니다. 다음은 그 예입니다.Python에서 내장 함수 재로드

import importlib as il 
import os 

import mymodule 
mymodule.x = 6 
print(mymodule.x) 
mymodule = il.reload(mymodule) 
print(mymodule.x) 


import builtins 
builtins.print = lambda x : os.system('echo hello') 
builtins.print('hi') 
builtins = il.reload(builtins) 
builtins.print('hi') 

여기서 mymodule에는 할당 x = 5 만 포함됩니다. 출력은 다음과 같습니다.

6 
5 
hello 
hello 

아마도 이런 질문은있을 수 있습니다. docs에서

답변

2

는 :

일반적으로 내장 또는 동적으로로드 모듈을 다시로드하는 것이 매우 유용하지 않습니다. 다시로드 sys, __main__, builtins 및 기타 주요 모듈은 권장하지 않습니다. 대부분의 경우 확장 모듈은 두 번 이상 초기화되도록 설계되지 않았으며 다시로드 할 때 임의의 방식으로 실패 할 수 있습니다.