Python의 대화형 모드는 REPL(읽기 - 평가 - 인쇄 - 루프) 원칙에 따라 작동합니다. Python 표준 라이브러리의 코드 모듈은 Python 스크립트 내에서 REPL 환경을 설정하기 위한 클래스 및 편의 기능을 제공합니다.
다음 두 클래스가 코드 모듈에 정의되어 있습니다.
대화형 통역사: 이 클래스는 구문 분석 및 인터프리터 상태(사용자의 네임스페이스)를 다룹니다.
대화형 콘솔: 대화형 Python 인터프리터의 동작을 밀접하게 에뮬레이트합니다.
모듈의 두 가지 편의 기능은 다음과 같습니다.
상호작용(): 읽기-평가-인쇄 루프를 실행하는 편리한 기능입니다.
compile_command(): 이 함수는 파이썬의 인터프리터 메인 루프(REPL)를 에뮬레이트하려는 프로그램에 유용합니다.
인터랙티브 인터프리터 방식
런소스(): 인터프리터에서 일부 소스를 컴파일하고 실행합니다.
runcode(): 코드 개체 실행
대화형 콘솔 방법:
InteractiveConsole 클래스는 InteractiveInterpreter의 하위 클래스이므로 위의 메서드를 자동으로 사용할 수 있습니다. 추가로 다음 메소드가 정의됩니다.
상호작용(): 대화형 Python 콘솔을 밀접하게 에뮬레이트합니다.
푸시(): 통역사에게 한 줄의 소스 텍스트를 푸시합니다.
리셋 버퍼(): 처리되지 않은 소스 텍스트를 입력 버퍼에서 제거하십시오.
raw_input(prompt="")
프롬프트를 작성하고 기본적으로 sys.stdin에서 한 줄을 읽습니다.
예시
import code x = 10 y = 20 def add(x,y): return x+y print (add(x,y)) code.interact(local=locals()) print (x,y) print (add(x,y))
위의 코드에서는 2개의 vaiable이 정의되어 함수에 전달됩니다. 대화형 콘솔을 호출합니다. local=locals() 인수를 사용하면 인터프리터 루프 내에서 로컬 네임스페이스를 기본값으로 사용할 수 있습니다.
변수에 다른 값을 할당하고 ctrl+D를 눌러 콘솔을 종료하면 해당 값이 이제 함수에 전달됩니다.
출력
addition= 30 Python 3.6.6 |Anaconda custom (64-bit)| (default, Oct 9 2018, 12:34:16) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> x=100 >>> y=200 >>> now exiting InteractiveConsole... 100 200 addition = 300