강의 복습
1. Variables (변수)
더보기
1) 변수와 메모리
- 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간
- 선언되는 순간 메모리 특정영역에 물리적인 공간이 할당됨
- 변수에는 값이 할당되고 해당 값은 메모리에 저장됨
- A = 8의 의미: "A는 8이다"가 아니라 "A라는 이름을 가진 메모리 주소에 8을 저장하라"
2) 변수 이름 작명법
- 알파벳, 숫자, 언더스코어(_)로 선언 가능하다
- 대소문자가 구분된다
- 예약어는 쓰지 않는다 ex) for, if, else 등
- 의미 있는 단어로 표기하는 것이 좋다
3) 간단한 연산
- 기본 자료형
유형 | 설명 | 예시 | ||
수치자료형 | 정수형 | integer | 양/음의 정수 | 1, 2, 3, 100, -9 |
실수형 | float | 소수점이 포함된 실수 | 10.2, -9.23 | |
문자형 | string | 따옴표(' 또는 ")에 들어가 있는 문자형 | abc, 가나다 | |
논리/불린 자료형 | boolean | 참 또는 거짓 | True, False |
- 연산자
- 연산자: +, -, *, /와 같은 기호들
- 피연산자: 연산자에 의해 계산이 되는 숫자들
- 문자간에도 + 연산 가능
print(5 - 3) # 2 (뺄셈)
print(3 * 4) # 12 (곱셈)
print(5 * 2) # 25 (제곱)
print(7 / 2) # 3.5 (나눗셈)
print(7 // 2) # 3 (몫)
print(7 % 2) # 1 (나머지)
a = 1
a += 1 # a = a + 1 (증가연산)
print(a) # 2
a -= 1 # a = a - 1 (감소연산)
print(a) # 1
str1 = 'abc'
str2 = 'def'
print(str1 + str2) # abcdef
2. Function and Console I/O (함수와 콘솔 입출력)
더보기
1) 함수
- 어떤 일을 수행하는 코드의 덩어리
- 반복적인 수행을 1회만 작성 후 호출
- 코드를 논리적인 단위로 분리
- 캡슐화: 인터페이스만 알면 타인의 코드 사용 가능
- 함수 선언 문법: 함수 이름, parameter(optional), indentation, return value(optional)
- 수행 순서
- 함수 부분을 제외한 메인프로그램부터 시작
- 함수 호출 시 함수부분 수행 후 되돌아옴
- parameter: 함수의 입력 값 인터페이스, argument: 실제 parameter에 대입된 값
- 예시
# 함수 선언
def calculate_rectangle_area(x, y):
return x * y
# 함수 호출
calculate_rectangle_area(10, 20)
2) Console in/out
- input(): 문자열 입력받는 함수
- print formatting: 형식(format)에 맞춰서 출력
- % string
- format 함수
- fstring (python 3.6 이후, PEP498에 근거)
print("{} {} {}".format("a", "b", "c") # a b c
value = 5
print(f"value is {value}") # value is 5
- padding: 여유 공간을 지정하여 글자배열 + 소수점 자릿수 맞추기
- naming: 해당 표시할 내용을 변수로 표시하여 입력
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))
3. Conditionals and Loops (조건문과 반복문)
더보기
1) 조건문
- 조건에 따라 특정한 동작을 하게 하는 명령어
- 조건을 나타내는 기준과 실행해야 할 명령으로 구성
- 조건의 참, 거짓에 다라 실행해야 할 명령이 수행되거나 되지 않음
- if-else문: 가장 기본적인 조건문
- 조건 판단 방법
- if 다음에 조건 표기
- 참/거짓의 구분을 위해서는 비교 연산자(==, !=, <, >, <=, >=, is, is not) 활용
- == / != : 값만 비교 , is / is not: 메모리 주소 비교
- 컴퓨터는 존재하면 참, 없으면 거짓으로 판단
- 논리 키워드(and, or, not)를 함께 사용하기도 함
- 삼항 연산자(Ternary operators): 조건문을 사용하여 참일 경우와 거짓일 경우의 결과를 한 줄에 표현
is_even = True if value % 2 == 0 else False
- elif문: if문 여러개 연결할 때 사용
2) 반복문
- 정해진 동작을 반복적으로 수행하게 하는 명령문
- 반복 시작 조건, 종료 조건, 수행 명령으로 구성
- for문: 리스트 또는 range() 함수 사용하여 반복
- while문: 조건이 만족하는 동안 반복 명령문 수행
- 반복 제어
- break: 특정 조건엣서 반복 종료
- continue: 특정 조건에서 남은 반복 명령 건너뜀
- else: 반복 조건이 만족하지 않을 경우 반복 종료시 1회 수행 (break로 종료시 수행 안 됨)
3) debugging(디버깅)
- 코드의 오류를 발견하여 수정하는 과정
- 문법적 오류: 들여쓰기, 오탈자, 대소문자 등 -> 인터프리터가 알려줌
- 논리적 오류: 뜻대로 실행이 안 되는 코드 -> 중간 중간 프린터 문을 찍어서 확인
- 오류의 원인을 알고 해결책을 찾아야 함
- 모든 문제는 Google + stack overflow로 해결 가능
4. String and advanced function concept
더보기
1) string
- 문자형 데이터를 메모리에 저장
- 영문 한 글자는 1byte의 메모리공간 사용
- 컴퓨터는 모든 데이터를 2진수로 인식 -> 2진수를 문자로 변환하는 표준 규칙 정함
- 인덱싱(Indexing): 리스트처럼 주소를 사용해 할당된 값을 가져오는 것
- 슬라이싱(Slicing): 문자열의 부분값을 반환
- 문자열 선언: 큰따옴표나 작은따옴표 사용
- 두 줄 이상의 문자열: \n 또는 따옴표 3번 연속 사용
- '\ '을 사용하여 키보드로 표시하기 어려운 문자들 표현
- raw string: 문자열 앞에 r 붙이면 \ 무시하고 그대로 출력
2) 함수 호출 방식
- 값에 의한 호출(Call by Value)
- 함수에 인자를 넘길 때 값만 넘김
- 함수 내 인자 값 변경 시 호출자에게 영향을 주지 않음
- 참조에 의한 호출(Call by Reference)
- 함수에 인자를 넘길 때 메모리 주소를 넘김
- 함수 내 인자 값 변경 시 호출자 값도 변경됨
- 객체 참조에 의한 호출(Call by Object Reference)
- 파이썬은 객체의 주소가 함수로 전달되는 방식
- 새로운 객체를 만들 경우 호출자에게 영향을 주지 않음
3) 변수의 범위 (Scoping Rule)
- 지역변수(local variable): 함수 내에서만 사용
- 전역변수(Global variable): 프로그램 전체에서 사용
- 전역변수는 함수에서 사용 가능
- 함수 내에서 전역변수와 같은 이름의 변수를 선언하면 새로운 지역변수가 생김
- 함수 내에서 전역변수 사용 시 global 키워드 사용
4) 재귀함수(Recursive Function)
- 자기자신을 호출하는 함수
- 점화식과 같은 재귀적 수학 모형을 표현할 때 사용
- 재귀 종료 조건 존재, 종료 조건까지 함수호출 반복
5) function type hints
- 사용자에게 인터페이스를 명확히 알려줄 수 있다
- 함수의 문서화시 parameter에 대한 정보를 명확히 알 수 있다
- mypy, IDE, linter 등을 통해 발생 가능한 오류를 사전에 확인
- 시스템 전체적인 안정성 확보
def do_function(var_name:var_type) -> return_type:
pass
Colored by Color Scripter
6) function docstring
- 파이썬 함수에 대한 상세스펙을 사전에 작성
- 함수명 아래 세 개의 따옴표로 영역 표시
7) PEP8
- 파이썬 코딩 컨벤션의 기준
- 최근에는 black 모듈을 사용하여 pep8 like 수준을 준수
8) 함수 개발 가이드라인
- 가능하면 짧게 작성할 것
- 함수 이름에 역할, 의도가 명확히 드러날 것
- 하나의 함수에는 유사한 역할을 하는 코드만 포함할 것
- 인자로 받은 값 자체를 바꾸진 말 것
- 공통적으로 사용되는 코드는 함수로 변환
- 복잡한 수식이나 조건 -> 식별 가능한 이름의 함수로 변환
9) 파이썬 코딩 컨벤션
- 코딩 컨벤션: 사람의 이해를 돕기 위해 필요한 규칙
- 일관성이 중요
- 읽기 좋은 코드가 좋은 코드
- flake8 모듈로 체크
코멘트
오늘은 강의도 많고 과제도 많아서 정신없는 하루였다. 대부분 알고 있는 내용이었지만 문자열 포맷, 함수 호출 방식같이 잘 모르거나 헷갈리는 것들도 있어서 더 자세히 공부해야겠다.
'부스트캠프 AI Tech 1기 [T1209 최보미] > U stage' 카테고리의 다른 글
Day6 학습정리 - Numpy / 벡터 / 행렬 (0) | 2021.01.25 |
---|---|
Day5 학습정리 - 파이썬으로 데이터 다루기 (0) | 2021.01.22 |
Day4 학습정리 - 파이썬 기초 문법 III (0) | 2021.01.21 |
Day3 학습정리 - 파이썬 기초 문법 II (0) | 2021.01.20 |
Day1 학습정리 - 파이썬/AI 개발환경 준비 (0) | 2021.01.18 |