부스트캠프 AI Tech 1기 [T1209 최보미]/U stage

Day2 학습정리 - 파이썬 기초 문법

B1001101 2021. 1. 19. 23:46

강의 복습

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 모듈로 체크

코멘트

오늘은 강의도 많고 과제도 많아서 정신없는 하루였다. 대부분 알고 있는 내용이었지만 문자열 포맷, 함수 호출 방식같이 잘 모르거나 헷갈리는 것들도 있어서 더 자세히 공부해야겠다.