OS (operating system)
우리의 프로그램이 동작할 수 있는 구동 환경
파일 시스템
os에서 파일을 저장하는 트리구조 저장 체계
root 디렉토리로부터 시작하는 트리구조
터미널 환경
mouse가 아닌 키보드로 명령을 입력하여 프로그램을 실행 : CLI (Command Line Interface)
변수
Basic Operation
list
인덱싱(indexing) / 슬라이싱(slicing)
인덱싱 : list에 있는 값들은 주소를 가지므로 주소를 사용해 값 호출
슬라이싱 : list의 주소값을 기반으로 부분 값을 반환
m = [1,2,3,4]
# indexing
print(m[1]) # 2
# slicing
print(m[1:3]) # [2,3]
리스트 연산
추가와 삭제
다양한 데이터 타입이 하나의 list에 들어감
파이썬은 해당 리스트 변수에는 리스트 주소값이 저장됨
패킹 / 언패킹
n차원 list 가능
함수
console in/out
input()
console 창에서 문자열을 입력받는 함수
print formatting
# 1) %-format
print("I eat %d apples." % 3) # I eat 3 apples.
print("I eat %s apples." % "five") # I eat five apples.
number = 3; day="three"
print("I ate %d apples. I was sick for %s days." # I ate 3 apples. I was sick for three days.
% (number, day))
print("Product: %s, Price per unit: %f." % ("Apple", 5.243)) #Product: Apple, Price per unit: 5.243000.
print()
# 2) str.format()
age = 36; name='Sungchul Choi'
print("I’m {0} years old.".format(age))
print("My name is {0} and {1} years old.".format(name,age))
print("Product: {0}, Price per unit: {1:.3f}.".format("Apple", 5.243))
## - padding(여유공간 지정)
print("Product: %5s, Price per unit: %.5f." % ("Apple", 5.243))
print("Product: {0:5s}, Price per unit: {1:.5f}.".format("Apple", 5.243))
print("Product: %10s, Price per unit: %10.3f." % ("Apple", 5.243))
print("Product: {0:>10s}, Price per unit: {1:10.3f}.".format("Apple", 5.243))
## - naming(표시할 내용 변수로 표시하여 입력)
print("Product: %(name)10s, Price per unit: %(price)10.5f." %
{"name":"Apple", "price":5.243})
print("Product: {name:>10s}, Price per unit: {price:10.5f}.".format(name="Apple", price=5.243))
print()
# 3) f-string
name = "Sungchul"
age = 39
print(f"Hello, {name}. You are {age}.")
print(f'{name:20}')
print(f'{name:>20}')
print(f'{name:*<20}')
print(f'{name:*>20}')
print(f'{name:*^20}')
number = 3.141592653589793
print(f'{number:.2f}')
I eat 3 apples.
I eat five apples.
I ate 3 apples. I was sick for three days.
Product: Apple, Price per unit: 5.243000.
I’m 36 years old.
My name is Sungchul Choi and 36 years old.
Product: Apple, Price per unit: 5.243.
Product: Apple, Price per unit: 5.24300.
Product: Apple, Price per unit: 5.24300.
Product: Apple, Price per unit: 5.243.
Product: Apple, Price per unit: 5.243.
Product: Apple, Price per unit: 5.24300.
Product: Apple, Price per unit: 5.24300.
Hello, Sungchul. You are 39.
Sungchul
Sungchul
Sungchul****
****Sungchul
**Sungchul**
3.14
조건문
조건에 따라 특정한 동작을 하게하는 명령어
파이썬 조건문 예약어 : if, elif, else
반복문
정해진 동작을 반복적으로 수행하게 하는 명령문
for, while 문 사용
break : 특정조건에서 반복 종료
continue : 특정조건에서 남은 반복 명령 skip 후 다음으로 넘어감
debugging (디버깅)
코드의 오류를 발견하여 수정하는 과정
문법적 에러 : 에러메시지 분석
논리적 에러 : 테스트
string
시퀀스 자료형으로 문자형 data를 메모리에 저장
영문자 한 글자는 1byte의 메모리공간 사용 --> 컴퓨터는 1bit 2진수로 데이터를 저장하므로 1byte는 = 256까지 저장 가능
컴퓨터는 문자를 2진수로 변환하여 저장
데이터 타입 별 크기
stirng 함수
raw string
특수 기호인 \ escape 글자를 무시하고 그대로 출력
raw_string ="이제 파이썬 강의 그만 만들고 싶다. \n 레알"
print(raw_string) # 두줄로 출력
raw_string = r"이제 파이썬 강의 그만 만들고 싶다. \n 레알"
print(raw_string) # 이제 파이썬 강의 그만 만들고 싶다. \n 레알
function
값에 의한 호출(call by value)
함수에 인자를 넘길때값만 넘김.
함수 내에 인자값변경시, 호출자에게 영향을 주지 않음
참조에 의한 호출(c함수에 인자를 넘길때메모리 주소를 넘김.
함수 내에 인자값변경시, 호출자의 값도 변경됨all by reference)
객체 참조에 의한 호출(call by object reference)
파이썬은 객체의 주소가 함수로 전달되는 방식
전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나,
새로운 객체를 만들 경우 호출자에게 영향을 주지 않음
function type hints
파이썬의 가장 큰 특징 – dynamic typing
처음 함수를 사용하는 사용자가 interface를 알기 어렵다는 단점이 있음
python 3.5 버전 이후로는 PEP 484에 기반하여 type hints 기능 제공
function type hints 장점
(1) 사용자에게 인터페이스를 명확히 알려줄 수 있다.
(2) 함수의 문서화시 parameter에 대한 정보를 명확히 알 수 있다.
(3) mypy 또는 IDE, linter 등을 통해 코드의 발생 가능한 오류를 사전에 확인
(4) 시스템 전체적인 안정성을 확보할 수 있다.
docstring
코딩 컨벤션
스택과 큐(stack & queue with list)
스택
last in first out : 먼저 들어간게 나중에 나옴
list를 사용하여 구현, 입력(push) : append(), 출력(pop) : pop()
큐
first in first out : 먼저 넣은게 먼저 나옴
list를 사용하여 구현, 입력(put) : append(), 출력(get) : pop()
튜플과 집합(tuple & set)
튜플
값 변경 불가, 선언 시 () 사용
변경되지 않아야 할 데이터 저장에 사용
집합
값을 순서없이 저장, 중복 불허, 선언 시 {} 사용
다양한 집합 연산 가능 (union: |, intersection: &, difference: -)
사전(dictionary)
데이터(value)를 저장 할 때는 구분 지을 수 있는 값(key)을 함께 저장
hash table
.items() / .keys() / .values()
Collection 모듈
List, Tuple, Dict에 대한 Python Built-in 확장 자료 구조(모듈)
def generator_list(value):
result = []
for i in range(value):
yield i
list comprehension과 유사한 형태로 generator 형태의 list 생성, generator expressoin 이라는 이름으로 부르며 일반적인 iterator에 비해 훨씬 작은 메모리 용량 사용
[] 대신 () 를 사용하여 표현
gen_ex = (n*n for n in range(500))
print(type(g)) #generator
중간과정에서 loop이 중단될 수 있을떄나 list 타입의 데이터를 반환해주는 함수는 generator로 만들면 읽기 쉽다.
def asterisk_test(a, *args):
print(a, args)
print(type(args))
asterisk_test(1,2,3,4,5,6)
1 (2, 3, 4, 5, 6)
<class 'tuple'>
def asterisk_test(a, **kargs):
print(a, kargs)
print(type(kargs))
asterisk_test(1, b=2, c=3, d=4, e=5, f=6)
1 {'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
<class 'dict'>
python은 OOP . OOP는 객체 개념을 프로그램으로 표현할 때 속성은 변수(variable), 행동은 함수(method)로 표현
변수명과 class명, 함수명은 짓는 방식이 존재함.
함수/변수 : snakecase, 띄어쓰기 부분에 ''를 추가
클래스 : CamelCasem, 띄어쓰기 부분에 대문자
파이썬에서 __의 의미
특수한 예약함수나 변수, 함수명 변경(맨글링)으로 사용
class Student:
def __init__(self, name, marks):
self.name = name
self.marks = marks
# self.gotmarks = self.name + ' obtained ' + self.marks + ' marks'
def gotmarks(self):
return self.name + ' obtained ' + self.marks + ' marks'
st = Student("Jaki", "25")
print(st.name)
print(st.marks)
print(st.gotmarks())
st.name = "Anusha"
print(st.name)
print(st.gotmarks())
'''
Jaki
25
Jaki obtained 25 marks
Anusha
Anusha obtained 25 marks
'''
위처럼 클래스를 구현하면 속성 gotmark를 변경하는 것이 힘들기때문에 Python property decorator를 사용하면 함수 gotmarks를 속성처럼 사용할 수 있음.
@property
def gotmarks(self):
return self.name + ' obtained ' + self.marks + ' marks'
def tag_func(tag, text):
text = text
tag = tag
def inner_func():
return '<{0}>{1}<{0}>'.format(tag, text)
return inner_func
h1_func = tag_func('title', "This is Python Class")
p_func = tag_func('p', "Data Academy")
def star(func):
def inner(*args, **kwargs):
print("*" * 30)
func(*args, **kwargs)
print("*" * 30)
return inner
def percent(func):
def inner(*args, **kwargs):
print("%" * 30)
func(*args, **kwargs)
print("%" * 30)
return inner
@star
@percent
def printer(msg):
print(msg)
printer("Hello")
'''
******************************
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Hello
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************
'''
module : 프로그램에서는 작은 프로그램 조각들, 프로그램을 모듈화시키면 다른 프로그램이 사용하기 쉬움
package : 모듈을 모아놓은 단위, 하나의 프로그램
package 만드는 순서
1. 기능들을 세부적으로 나눠 폴더로 만듬
2. 각 폴더별로 필요한 모듈 구현
3. 폴더별로 init.py 구성
4. main.py 파일 만들기
기본 규칙 및 출결 규칙 정하기
5주간 통계학 스터디 진행
- Mathematics for machine learning part 1 chapter 6
- 한 챕터씩 발표 진행 및 질의 응답
매일 학습 기록 꼼꼼히 남기기
이틀 동안 python 관련 내용 빠르게 학습하고 AI Math 를 자세히 공부하기
없음
AI Boostcamp의 첫 날, 많은 양의 강의를 빠르게 듣고 학습 정리까지 해야해서 쉽지는 않을 것 같다.
같은 목표를 가지고 모인 사람들이다 보니 관심사가 겹쳐 함께 공부하기에는 최고의 환경이다.