Auspice by Goorm, Manage by DAVIAN @ KAIST

Lecture 1: Environment

운영체제

  1. Windows
    • 친숙함, 한컴, 공인인증서 등 사용가능.
    • 한국에서 사용하기 편한 운영체제.
  2. Linux
    • 서버 호환 쉬움. (WSL, SSH)
    • 특정 라이브러리 설치 용이, 개인에게 무료 운영체제.
    • 개인적으로 대학 연구실에서 GPU 서버 구축한 경험이 있어서 사용하는데 큰 어려움이 없음.
  3. Mac
    • 현재 사용하고 있는 노트북 운영체제.
    • 유닉스 운영체제이므로 Linux와 큰 차이 없음.

Alternative Options for Window Users

  1. Virtual Box. (가상 환경 사용)
  2. WSL 사용.
  3. Colab. (구글 클라우드 기반 IDE)
  4. goormide. (현 수강하고 있는 goorm의 클라우드 기반 IDE)

Code Editor

  1. text editor. (메모장)
  2. VIM. (터미널에서 간단한 편집을 할 때 사용한 편집기)
  3. Atom.
  4. VScode. (Visual Studio Code)
  5. 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'>

댓글남기기