Jupyter Notebook
주피터 노트북
은 코드·설명·실행 결과를 셀 단위 문서로 작성하는 웹 기반 작업 도구이다. 브라우저는 편집 화면, 서버는 문서와 통신의 중개, 커널은 코드를 실행하는 별도 라는 역할을 나누어 이해한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
로고: LF Charities / Project Jupyter 공식 자료. 제품 식별을 위해 표시하며 각 상표의 권리는 권리자에게 있습니다.
01무엇이고, 어떤 일을 하나
- 명령을 작은 셀로 나누어 실행하고 결과를 표·문자·그림과 함께 관찰한다.
- 설명과 코드·출력을 같은 문서에 기록하여 실습 흐름을 남긴다.
- 등 해당 커널이 지원하는 언어를 프런트엔드 화면과 연결한다.
02어떤 순서로 동작하나
- 문서와 커널 선택
서버가 저장된 문서를 열고 선택한 커널을 연결한다. 문서를 여는 일과 그 문서의 코드를 처음부터 모두 실행하는 일은 다르다.
- 셀 실행 요청
사용자가 을 실행하면 서버가 코드를 커널로 전달한다. 위쪽 셀부터 실행하도록 강제되는 것은 아니므로 선택한 순서가 실제 상태를 만든다.
- 상태 변경과 출력
커널이 코드를 실행하여 변수·객체 등 메모리 상태를 바꾸고 출력이나 오류를 돌려준다. 이후 셀은 같은 커널에 남은 상태를 사용할 수 있다.
- 저장과 재시작
서버가 코드·출력·메타데이터를 문서로 저장한다. 은 실행 중 메모리 상태를 초기화하며, 저장된 화면 출력이 그대로 보인다고 변수가 복구된 것은 아니다.
03먼저 알아둘 용어와 구성요소
- 커널에 전달할 코드 단위이다. 문서의 배치 순서와 실행 요청 순서가 다르면 같은 화면에서도 다른 결과가 나타날 수 있다.
- 실제 코드를 실행하고 변수·객체 상태를 유지한다. 커널의 패키지는 해당 실행기에 설치되어야 하며 Notebook 서버 환경과 같다고 단정하지 않는다.
- 코드·설명·메타데이터·저장된 출력을 표현하는 JSON 기반 문서 형식이다. 실행 중 커널의 모든 메모리를 직렬화한 스냅샷은 아니다.
- 의 실행 순서를 추적하는 단서다. 번호가 문서 위에서 아래로 증가하지 않으면 재실행·순서 변경이 있었는지 살펴본다.
- 커널의 실행 상태를 새로 만드는 동작이다. 문서와 저장된 출력의 수명과 다르므로 재시작 후 위에서부터 다시 실행해 재현 가능성을 확인할 수 있다.
객체 식별자와 실행 중 예외를 실제 출력으로 구분하기
실행 결과가 무엇을 증명하는지 한정하고, 값의 동일성·객체 정체성·예외 발생 지점을 따로 읽는다.
실습 구성과 전제
- 정수 대입 스크립트와 문자열 검색 셀은 별도 실험이다. 같은 커널의 연속 실행으로 가정하지 않는다.
- 구현과 실행 방식에 따라 상수 재사용은 달라질 수 있다. 화면의 id 숫자를 다른 컴퓨터에서 재현할 필요는 없다.
같은 값과 같은 객체를 나누어 읽는다
- ==는 값 비교이고 is는 객체 정체성 비교다. id는 객체가 살아 있는 동안 유지되는 식별자다.
- 캡처의 각 스크립트 실행에서는 같은 정수 리터럴이 동일 객체로 재사용된 것으로 읽을 수 있다. 이것을 모든 큰 정수에 보장되는 언어 규칙으로 일반화하지 않는다.
원본 크기로 보기 ↗- 257을 두 이름에 대입한 실행에서 두 id 출력이 같다.
- 1000으로 바꾼 별도 실행에서도 두 id는 같지만 앞 실행의 숫자와는 다르다.
확인 기준구현·버전·실행 파일 또는 셀 경계를 기록하고, 실제 값 비교에는 ==를 사용한다.
문법을 통과한 뒤 실패한 호출을 찾는다
- 문자열 index는 지정 범위에서 처음 일치한 위치를 반환하고 없으면 ValueError를 발생시킨다. end는 포함되지 않는다.
- 사진에는 앞의 세 호출 출력이 있으므로 해당 셀은 실행을 시작했다. 네 번째 호출의 런타임 예외를 구문 분석 실패와 구별한다.
원본 크기로 보기 ↗- 출력 0, 8, 5 다음에 ValueError: substring not found가 나타난다.
- 화살표는 index('s', 3, 5) 호출을 가리킨다. 위치 5는 이 검색 범위에 포함되지 않는다.
확인 기준문자열 위치를 0부터 세고, start≤위치<end 조건을 직접 대입한다.
같은 조건을 작은 예제로 재확인한다
- index의 예외를 예상하고 처리하면 뒤의 검증도 계속할 수 있다. 예외 처리 없이 실행하면 실패한 호출 이후의 문장은 실행되지 않는다.
- 노트북에서는 셀을 실행한 순서에 따라 변수 상태가 달라진다. 검증할 값의 대입부터 함께 실행해 이전 셀 상태의 영향을 줄인다.
s = 'sabcdsefs' print(s.index('s'), s.index('s', 6), s.index('s', 3, 7)) try: print(s.index('s', 3, 5)) except ValueError: print('검색 범위에 없음')관찰한 세 위치와 예외 조건을 한 번에 재구성한 예제다.
확인 기준0 8 5와 범위 없음이 나오는지 확인한다. 객체 id의 특정 숫자는 성공 기준에 넣지 않는다.
실습에서 확인한 동작 원리
- 실행 출력은 그 실행 조건의 증거이며 구현별 최적화까지 언어의 보편 규칙으로 만들지 않는다.
- 앞선 출력과 traceback 위치를 함께 보면 파싱·실행·예외 처리 중 어느 단계에서 멈췄는지 설명할 수 있다.
04예제로 따라가기
- 첫 셀 x=1, 다음 셀 x+=1을 실행하면 2가 된다. 두 번째 셀만 다시 실행하면 3이 되어 같은 코드 화면이라도 실행 이력에 따라 값이 달라진다.
- 커널을 재시작한 뒤 x+=1 셀부터 실행하면 x를 아직 정의하지 않아 NameError가 발생할 수 있다. 저장된 이전 출력 3이 변수 존재의 근거는 아니다.
- 터미널 에서 설치한 패키지가 셀에서 보이지 않으면 셀 안의 sys.executable과 터미널 실행기 경로를 비교하여 커널 환경 차이를 구분한다.
05혼동하기 쉬운 점과 확인 기준
- Notebook 셀은 단순 설명문이 아니라 서버 측 코드를 실행할 수 있다. 출처를 모르는 문서의 전체 실행과 문서 내용을 열람하는 행위를 구분한다.
- 0.0.0.0 바인딩은 수신 인터페이스 범위를 넓히는 설정이며 접속 인증··방화벽을 대신하지 않는다. 브라우저가 열리는 것과 안전한 원격 공개는 별개다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
Jupyter 브라우저·서버·커널 구조도
The IPython Kernel과 The Interface의 두 그림을 이어 읽는다. 브라우저의 셀 실행·파일 저장이 각각 커널과 서버의 어느 책임으로 연결되는지 비교하는 자료다.
- 코드를 실행하는 별도
- 파일을 저장하는 서버의 역할
- 화면의 문서 순서와 커널에 남아 있는 실행 상태의 차이
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.