컴퓨터 OS
- OS(Operating System)는 운영체제로, 우리의 프로그램이 동작할 수 있는 구동 환경이며 그 예시로 MacOS, Windows 등이 있습니다. 프로그램은OS에 의존적이기 때문에 OS에 맞춰서 개발해야 합니다. 하지만 파이썬은 플랫폼 독립적인 언어로 운영체제에 상관없이 사용할 수 있습니다.
파일 시스템
- 파일 시스템(File system)은 OS에서 파일을 저장하는 트리구조 저장 체계 입니다. 여기서 트리구조란, 폴더 안에 다른 폴더와 파일들이 들어가 있는 형태를 말합니다.
- 파일의 기본 체계는 파일(File)과 디렉토리(Directory)로 구성되어 있습니다. 여기서 디렉토리는 폴더로 불리기도 하며 파일과 다른 디렉토리를 포함할 수 있습니다. 파일은 컴퓨터에서 정보를 저장하는 논리적인 단위로, 파일명과 확장자로 식별되며 실행, 쓰기, 읽기 등을 할 수 있습니다.
- 컴퓨터 파일의 고유한 위치를 경로라고 하는데, 경로에는 절대 경로와 상대 경로 2가지가 존재합니다. 절대 경로는 루트 디렉토리부터 파일위치까지의 경로이며 상대 경로는 현재 있는 디렉토리로부터 타깃 파일까지의 경로입니다.
파이썬의 시작
- 1991년 귀도 반 로섬이 발표했는데 처음에는 C언어로 구현되었습니다. 그리스 신화속의 괴물 뱀과 몬티 파이썬이라는 코메디 그룹의 이름에서 유래되었습니다.
파이썬의 특징
- 플랫폼 독립적인 인터프리터 언어
- 플랫폼은 OS를 말하는데 플랫폼 독립적이라는 것은 OS에 상관없이 사용 가능하다는 뜻입니다. 인터프리터는 소스코드를 바로 실행할 수 있게 지원하는 프로그램 실행 방법입니다.
- 컴파일러
- 작동방식: 소스코드를 기계어로 번역, 해당 플랫폼에 최적화
- 장점: 실행속도가 빠름
- 단점: 한번에 많은 기억장소 필요
- 주요 언어: C,자바, C++, C#
- 인터프리터
- 작동방식: 별도의 번역과정 없이 소스코드를 실행시점에 해석.
- 장점: 간단히 작성, 메모리가 적게 필요
- 단점: 실행속도가 느림
- 주요 언어: 파이썬, 스칼라
- 객체 지향 동적 타이핑 언어
- 객체 지향은 실행 순서가 아닌 단위 모듈(객체) 중심으로 프로그램을 작성하는 것으로 하나의 객체는 어떤 목적을 달성하기 위한 행동(method)와 속성(attribute)을 가지고 있습니다. 동적 타이핑 언어란 프로그램이 실행하는 시점에 프로그램이 사용해야할 데이터에 대한 타입을 결정하는 것입니다.
3) 터미널
- 터미널은 마우스가 아닌 키보드로 명령을 입력하는 프로그램으로, Text를 사용하여 컴퓨터에 명령을 입력하는 인터페이스 체계인 CLI(Command Line Interface)에 해당됩니다. Windows에는 CMD window, Mac과 Linux에는 Terminal이 있으며 Windows의 경우 cmder도 권장됩니다.
- 각 터미널에서는 프로그램을 작동하는 shell이 존재하는데, shell 마다 다른 명령어를 사용합니다.
Variable & Memory
- 가장 기초적인 프로그래밍 문법 개념으로 데이터를 저장하기 위한 메모리 공간의 프로그래밍상 이름.
- 값을 저장하는 장소로 변수는 메모리 주소를 가지고 있고 변수에 들어가는 값은 메모리 주소에 할당됨.
Basic Operations
- 파이썬은 데이터의 Type을 따로 선언할 필요가 없습니다. 따로 선언해주지 않아 판단하는 시간 때문에 더 느리기는 하지만 그만큼 동적이고 편합니다.
- +, -, *, / 같은 기호들을 연산자라고 칭합니다. 해당 연산자에 의해 계산 되는 숫자들을 피연산자라 칭하며 문자간에도 +연산이 가능합니다.
- int(), float(), str() 등을 이용하여 데이터의 타입을 변경해 줄 수 있으며 type() 함수를 통해 변수의 데이터 타입을 확인할 수 있습니다.
List 정의 및 특징
List의 정의 및 특징
- List: 여러 데이터들의 집합을 나타내는 시퀀스 자료형입니다.
- 인덱싱 (Indexing): List의 각 값은 주소(offset)를 가지며, 이 주소를 사용해 값을 호출합니다.
- 슬라이싱 (Slicing): List의 일부 값을 잘라서 사용합니다. 이는 주소 값 범위를 기반으로 합니다.
- 리스트 연산: 다양한 연산이 가능합니다, 예를 들어:
- + (concatenation)
- in (is_in)
- append(): 리스트 끝에 요소 추가
- extend(): 리스트에 다른 리스트 추가
- insert(): 특정 주소에 값 추가
- remove(): 특정 값 제거
- del: 주소를 기반으로 한 값 제거
메모리 저장 방식
- List 변수에는 리스트의 메모리 주소 값이 저장됩니다. = 연산자는 '같다'는 의미가 아니라 메모리 주소에 값을 할당하는 것을 의미합니다.
- 패킹과 언패킹
- 패킹 (Packing): 한 변수에 여러 개의 데이터를 넣는 것.
- 언패킹 (Unpacking): 패킹된 변수의 데이터를 여러 변수로 분리하는 것.
- 이차원 리스트
- 이차원 리스트는 리스트 안에 리스트를 포함하여 행렬(Matrix)을 생성합니다.
- 복사: 이차원 리스트를 복사할 때는 copy.deepcopy()를 사용하여야 원본 리스트가 변경되어도 복사된 리스트가 영향을 받지 않습니다.
Function
- function은 어떤 일을 수행하는 코드의 덩어리로 코드를 논리적인 단위로 분리합니다. 반복적인 수행을 1회만 작성 후 호출할 경우 사용합니다. 캡슐화를 통해 인터페이스만 알면 타인의 코드를 사용하기 쉽게 도와줍니다.
- 함수 선언 문법
- 구성요소: 함수 이름, parameter, indentation, return value(optional)
- parameter 유무, 반환 값(return value) 유무에 따라 함수의 형태가 다릅니다.
def 함수이름(parameter):
수행문 #1(statements)
수행문 #2(statements)
return <반환값>
Console in/out
- input() 함수는 콘솔창에서 문자열을 입력 받는 함수로 str 타입만 받을 수 있습니다. 숫자가 필요할 땐 float, int 등을 사용하여 바로 형 변환이 가능합니다.
print formatting
- % string -> ex) print(‘%s %s’ % (‘one, ‘two))
- format 함수 -> ex) print(’{} {}’ % (‘one, ‘two))
- fstring -> ex) print(f’{one} {two}’})
조건문: 조건에 따라 특정한 동작을 하게하는 명령어
- 조건을 나탄내는 기준과 실행해야 할 명령으로 구성되며 if, else, elif 등의 예약어를 사용.
'x == y' 와 'x is y'의 차이
- 'x==y'는 값이 동일한지 검사하지만 'x is y'는 동일한 위치의 id값을 가지고 있는지에 대한 여부를 판단. 파이썬에서 -5~256는 이미 파이썬에서 메모리를 할당되어있기 때문에 True를 반환하지만 이 범위를 넘어가면 False 반환.
삼항 연산자
- 조건문을 사용하여 참일 경우와 거짓일 경우의 결과를 한 줄에 표현.
value = 12 is_even = True if value % 2 == 0 else False print(is_even) # 리턴값: True
반복문: 정해진 동작을 반복적으로 수행하게 하는 명령문
- 반복 시작 조건, 종료 조건, 수행 명령으로 수성되었으며 for, while 등의 명령 키워드를 사용.
- range()는 마지막 숫자 바로 앞까지 리스트를 만들어줌. ex) range(1,5) = [1,2,3,4]
- 문자열은 한자씩 리스트로 처리하고 리스트 안의 문자열들은 각각의 문자열로 처리한다.
- for문과 while문의 차이는 정해진 횟수가 있는가임. for문은 정해진 횟수동안 반복되지만 while의 경우 조건이 만족하지 않을 때까지 계속 loop문을 실행
- 반복문을 실행할 때에는 debugging을 위해서 print문으로 출력하면서 loop문이 어떻게 돌아가는지 확인이 가능한데, 여기서 디버깅은 코드의 오류를 발견하여 수정하는 과정으로 문법적 에러, 논리적 에러를 찾기 위한 테스트이다.
문자열
- 시퀀스 자료형으로 문자형 data를 메모리에 저장한다. 영문자 한 글자는 1byte의 메모리 공간을 사용한다. 여기서 1byte = 8bit = 256까지 저장 가능.
- 정수형의 경우 int는 4바이트, long은 무제한의 크기를 가지며 실수형인 float는 8바이트를 가진다.
- 문자열의 각 문자는 개별 주소(offset)을 가지며 이 주소를 사용해 할당된 값을 가져오는게 인덱싱이다. 인덱싱은 0부터 시작. 문자열의 주소값을 기반으로 문자열의 부분값을 반환하는 슬라이싱(Slicing)도 가능.
- 문자열은 덧셈과 뺄셈 연산이 가능하며 in 명령으로 포함여부 체크를 할 수 있다.
| 함수명 | 기능 | 함수명 | 기능 |
|---|---|---|---|
| len(a) | 문자열의 문자 개수 반환 | a.upper() | 대문자로 변환 |
| a.lower() | 소문자로 변환 | a.capitalize() | 첫문자를 대문자로 변환 |
| a.title() | 띄워쓰기 후 첫글자만 대문자 | a.count(문자) | 문자의 횟수 반환 |
| a.find(문자), a.rfind(문자) | 문자가 들어간 위치 반환 | a.startwith(문자) | 문자로 시작하는 문자열 여부 반환 |
| a.endwith(문자) | 문자로 끝나는 문자열 여부 반환 | a.strip() | 좌우 공백을 없앰 |
| a.rstrip(), a.lstrip() | 오른쪽/왼쪽 공백을 없앰 | a.split() | 공백을 기준으로 나눠 리스트로 반환 |
| a.split(문자) | 문자를 기준으로 나눠 리스트로 반환 | a.isdigit() | 문자열이 숫자인지 여부 반환 |
| a.islower() | 문자열이 소문자인지 여부 반환 | a.isupper() | 문자열이 대문자인지 여부 반환 |
'Naver Boostcamp AI Tech > Level 1' 카테고리의 다른 글
| < Boostcamp > AI Math 2 (0) | 2023.12.27 |
|---|---|
| < Boostcamp > Python 2 (0) | 2023.12.27 |
| < Boostcamp > AI Math 1 (0) | 2023.12.27 |
| < Boostcamp > Level 1 회고 (0) | 2023.12.26 |
| < Boostcamp > Level 1 Image Classification (0) | 2023.12.15 |