Jupyter 사용법 | Python Data Type
Jupyter notebook
window 사용을 기준으로 Window PowerShell을 실행한다.
pwd
로 현재 폴더를,ls
로 현재 폴더에 존재하는 file들을 확인 후mkdir 폴더이름
command로 python file을 만들고 실습할 폴더 하나를 생성한다.나는 python-basic이라는 폴더를 만들고
cd python-basic
명령으로 해당 폴더로 이동했다.만든 폴더로 이동한 후 cmd에
jupyter notebook
command를 입력한다.조금 기다리다보면 (10초 이상 소요) 브라우저 새 창으로 jupyter notebook이 실행된다.
그림과 같이 우측의 new button을 눌러 새로운 python file을 생성한다.
그럼 새로운 탭에 생성된 file이 보여진다.
제목을 수정하고 실습을 시작하면 된다!
method 이름을 치고
Shift + Tab
을 하면 function의 signature를 확인할 수 있다.object (variable)을 입력한 상태에서
Tab
키를 누르면 사용 가능한 method들을 확인할 수 있다.instruction을 작성한 후
Shift + Enter
를 누르면 해당 line이 실행된다.어떤 line에 focus가 있는 상태에서,
ESC + m
을 누르고Enter
를 치면 markdown으로 작성할 수 있다.
Python Data Type
Number Type : Int, Float
javaScript와 다르게 C처럼 int, float등 정수형과 실수형을 구분한다.
String
- character와 string의 구분 없이 str type을 가진다.
Python Data Structure
Mutable and Immutable Object
Mutable object (변경 가능 객체)
- list
- dictionary
- set
Immutable object (변경 불가능 객체)
- int, float 등 숫자는 immutable : 값을 덮어쓰는 것이 아니라 새로운 memory 공간에 할당하고 그 값을 가리킨다. 이름 객체가 값 객체를 가리키는 것을 binding이라고 한다.
- string
- Tuple
Dynamic Typing
Python은 Dynamic typing 언어로, C / C++ 같은 정적 타이핑 언어처럼 자료형을 미리 선언하지 않아도 알아서 동적으로 자료형을 할당할 수 있다.
Data Assignment
- C : char a = 10;
- A라는 이름을 가진 공간에 10의 값이 저장된다.
- 20으로 변경시 같은 메모리 공간의 값을 변경한다.
- Python : a = 10;
- 10이라는 값을 가진 객체가 생기고, a라는 이름을 가진 객체가 10을 가리키게 된다.
- 만약 a=20으로 재할당할 경우 20이라는 값을 가진 객체가 생기고 a는 20을 가리켜, 10은 자신을 가리키는 객체가 없으므로 제거된다.
- 20으로 변경시 10의 메모리공간을 건드리지 않고 새로운 공간을 만든다.
- Integer, float등 number type은 immutable 객체
Python 성질
- 모든 것이 객체
: integer가 그냥 4 byte가 아니라 객체로 필요한 것들이 붙어있어 크기를 더 차지함 - Overflow
: overflow 되는 대신 4 byte를 8 byte로 늘림. 대신 경계검사 하므로 속도 저하
Language Abstraction
- Hardware 의존적인 Assembly 언어에서 벗어나 하드웨어 독립적인 C언어로 Coding하고 각 하드웨어 별 어셈블러로 해석하게끔 함 ▶ 하드웨어 추상화 (각 어셈블러가 어떻게 동작하는지 몰라도 C로 코딩하면 됨)
- Assembly : low level language
- C / C++ : hardware abstraction 됐으나 memory abstraction X ▶ 메모리를 직접 할당, 해제
- Java / C# : 언어 자체에서 메모리 할당, 해제 ▶ garbage collection. Memory abstraction O 그러나 Data Type은 선언해줘야함
- Python / javaScript : Data type abstraction. Interpreter Language
- Level은 abstraction level을 말하는 것이지 급을 나누는 것이 아님
- 성능은 C/C++ 생산성은 Python