goormNLP [Python Overview]
Auspice by Goorm, Manage by DAVIAN @ KAIST
Lecture 1: Environment
운영체제
- Windows
- 친숙함, 한컴, 공인인증서 등 사용가능.
- 한국에서 사용하기 편한 운영체제.
- Linux
- 서버 호환 쉬움. (WSL, SSH)
- 특정 라이브러리 설치 용이, 개인에게 무료 운영체제.
- 개인적으로 대학 연구실에서 GPU 서버 구축한 경험이 있어서 사용하는데 큰 어려움이 없음.
- Mac
- 현재 사용하고 있는 노트북 운영체제.
- 유닉스 운영체제이므로 Linux와 큰 차이 없음.
Alternative Options for Window Users
- Virtual Box. (가상 환경 사용)
- WSL 사용.
- Colab. (구글 클라우드 기반 IDE)
- goormide. (현 수강하고 있는 goorm의 클라우드 기반 IDE)
Code Editor
- text editor. (메모장)
- VIM. (터미널에서 간단한 편집을 할 때 사용한 편집기)
- Atom.
- VScode. (Visual Studio Code)
- PyCharm. (현재 내가 사용하고 있는 에디터)
Web-based IDE
Jupyter Notebook, Jupyter Lab 두개의 툴 모두 사용한 적이 있어 큰 어려움이 없음.
Cloud-based IDE
Colab 강의에서 메인으로 사용할 예정. 학부때 사용한 적이 있어 다루는데 큰 어려움이 없음. 마크다운과 코드 결과 리뷰 할 때 편함. (ipynb)
Goorm IDE 사용하고싶었으나, 이번 강의에서는 사용 안함.
Package & Environment Manager
현재 출시된 외부 라이브러리는 너무 많음.
- 설치 및 관리를 자동화할 도구 필요.
- 환경 간 쉬운 전환 필요.
PIP + Virtual env -> Python 기본 패키지 관리 프로그램. Anaconda3 -> 기계학습 및 수치해석 특화 패키지 관리 프로그램.
Anaconda3는 여러 패키지를 한번에 설치하므로 용량을 꽤 먹음. -> miniconda 설치함. ( + 애플 실리콘 칩 호환)
Lecture 2: Jupyter
일반적으로 Python의 확장자는 .py이지만, 파이썬의 interactive함을 사용 못함. (.py는 한 줄 씩 실행하는 것이 아닌 코드 전체를 RUN하는 방식)
Ipython 커널을 기반으로한 Interactive 파이썬 셀 프로그래밍
- .ipynb 파일 확장자.
- Jupyter라는 웹 기반 IDE 사용함.
- VsCode 및 PyCharm, Colab에서도 사용 가능함.
- 미디어, 코드, 수식 등을 하나의 문서 형태로 표현 가능. (마크다운)
Lecture 3: Variable & Operator
- Primitive Data Types (원시 자료형): 가장 기본이 되는 자료형.
- Arithmetic Operator: 산술 연산을 위해서 산술 연산자를 활용.
- Bit Operator: 비트 연산을 위해서 비트 연산자를 활용.
-
In-place & Out-place: 산술/비트 연산자는 대입 연산자와 함께 축약 가능. ex) a += 1 는 In-place 연산, a = a + 1은 Out-place 연산
-
Condition Operators: 객체 간의 비교를 위해서 비교 연산자 활용.
bool끼리의 연산은 논리 연산자를 활용.
- Immutable Types & Mutable Types 파이썬에서 대입은 원칙적으로 메모리 주소 복사. (즉, 값을 복사하지 않고 같은 주소를 공유함)
불변형의 경우 수정이 필요한 경우에 새로운 객체 를 생성.
>>> a = 1
>>> b = 1
>>> a is b
True
>>> a = 13453436
>>> b = 13453436
>>> a is b
False
>>> a = ‘text’
>>> b = ‘long-long-text’
>>> a is ‘text’, a == ‘text’, b is ‘long-long-text’, b == ‘long-long-text’
(True, True, False, True)
>>> a = True
>>> a is True
True
>>> a = None
>>> a is None
True
- Dynamic Typing: 코드 실행 지점에서 데이터의 Type을 결정함.
int first = 10
int second = 20
printf("%d", first + second);
C 예시
first = 10
second = 20
print(first + second)
Python 예시
-
Implicit Type Conversion:
bool -> int -> float -> complext 순서. None type과, str type은 별개. int간 나누기 -> float 정수 나누기 -> // -
Explicit Type Conversion: 아래 명령어로 명시적 형 변환 가능.
- int(value)
- float(value)
- str(value)
실수 -> 정수: 소수점 내림. (반올림의 경우 round 내장 함수 사용)
-
빈문자열, 0, None은 False로 변환.
-
Type Checking type 내장 함수로 변수의 타입 확인 가능. isintance 내장 함수로 변수가 지정 타입인지 확인.
a = 123
b = 12.3
c = '12.3'
>>>type(a)
<class 'int>
>>>type(b)
<class 'float'>
>>>type(c)
<class 'str'>
댓글남기기