국문과 유목민

[일일리포트] Day 02 본문

IT 견문록/2022_부스트캠프 AITech 3기(100일)

[일일리포트] Day 02

논곰 2022. 1. 18. 22:17

해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수 없어, 핵심 이론과 코드 위주로 정리하고 있기에 내용이 부족할 수 있습니다.

▶ Today I Learned (핵심 요약 정리)

파이썬 기초 (Parameter, DataType, Function)

Print Fomatting: %string, format함수, fstring

Old SChool Formatting

# old_school formatting
print('%s %s'%('one', 'two'))
print('%d %d'%(1, 2))
print('%5d %8.2f'%(1, 59.058))
print("{} {}".format(1, 2))
print("Price per unit: {0:10.5f}".format(34.231675))

New SChool Formatting

# New School formatting
name = "chan"
age = 28
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:1>20}')# 패딩 채우기

number = 3.141592653589793
print(f'{number: .2f}')
"""
Hello, chan. You are 28.
chan                
                chan
chan                
        chan        
1111111111111111chan
 3.14
"""

파이썬 기초 (Condition, Loop, StringFunction)

  • 삼항연산자: params = True if 6%2 == 0 else False → True
  • debugging: 문법적 혹은 논리적 에러를 찾기 위한 방법
  • if __name__ == __main__: 을 활용해서 .py파일이 main으로 불려졌을 때만 코드를 출력하게 하는 방법

문자열 함수

  • str.capitalize(): 첫 문자를 대문자로
  • srt.count('문자'): 문자열에 '문자'가 들어간 횟수 반환
  • str.find('문자'): 문자열에 '문자'가 들어군 위치 반환
  • str.strip(): 공백 제거
  • str.split('분리 기준'): 문자를 '분리 기준'으로 분리
  • raw_string: str문 앞에 `r`을 붙이면 문자열 그대로 출력한다. [r"문자열 \n \t" -> "문자열 \n \t"]
  • Call by objecct reference: Call by Value, Call by Reference, Call by Object Reference가 존재. 파이썬은 Call by Object Reference 방식으로 객체의 주소가 함수로 전달되는 방식이다.
  • Scoping Rule(변수의 범위): 전역변수 & 지역변수. 함수에서 전역변수를 사용하려면 global 키워드를 사용해서 함수 내에서 변수를 정의해줘야 하는 것만 기억
  • Function Type Hints: 처음 함수를 사용하는 사용자가 interface를 알기 어려운 점을 보완하기 위해 함수에 대해 pamater의 type과 리턴 type을 명시하는 방법
    • def do_function(var_name: var_type) -> return_type: pass
      • [ex) def func(name: str) -> int: pass]
  • Docstring: 함수 사용자의 이해를 돕기 위해 사전에 작성한 파이썬 함수에 대한 상세 정보. parameters, returns, examples 등을 넣어준다. VSCode의 'docstring Generator'를 이용하면 쉽게 작성할 수 있다.

함수 작성 가이드라인

  • 함수는 가능하면 짧게 작성
  • 함수 이름에 함수의 역할, 의도가 명확히 나타나야 한다.
  • 하나의 함수는 하나의 역할만 하게 만들어주자.
  • 인자로 받은 값 자체를 바꾸지 말고, 임시 변수를 선언하는 습관을 들여야 한다

함수를 만드는 경우

  • 공통적으로 사용되는 코드
  • 복잡한 수식은 함수로 만든다
  • 복잡한 조건도 함수로 만든다

컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다.
좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다.

파이썬 자료구조

  • Stack, Queue, Tuple, Set, Dict형의 자료구조가 대표적이다.
  • Dict: 데이터를 'key:value' 형식으로 저장한다.
    • dict.items() : dict의 데이터 출력 (tuple 형태)
    • dict.keys() : dict의 key값만 출력
    • dict.values() : dict의 value값만 출력
  • Collections 모듈
    • deque: from collections import deque
      • Stack과 Queue를 지원하는 모듈. List에 비해 효율적인=빠른 자료 저장 방식을 지원
      • rotate, reverse 등 Linked List의 특성을 지원
      • 리스트에 사용되는 extend 등도 활용가능하고 extendleft도 활용가능하다
      • deque는 기존 list보다 효율적인 자료구조를 제공하기 때문에 시간을 많이 줄일 수 있다.
    • Counter: from collections import Counter
      • Sequence type의 data element들의 개수를 dict형태로 반환
      • keyword parameter로 반환해준다. (counter.elements())
      • Set의 연산들을 지원한다. (Set의 확장으로 생각해도 좋다.)

▶ Review

  • fstring방법은 솔직히 제대로 배운 건 처음인 것 같다. 보통은 format함수를 활용했었는데, 이제는 fstring방법을 활용하는 연습을 해야겠다.
  • raw_string 방법도 배워두면 유용하게 써먹을 수 있을 것 같다.
  • 또한 Function Type Hints의 경우 git에서 코드를 fork해서 받아볼 때 많이 봤었는데 그 의미를 제대로 모르고 있었던 것 같다. 이번에 잘 알게된 것 같다.
  • 자료형에서도 Dict형이나, Deque, Counter 자료형은 알고리즘을 공부할 때, 유용하게 사용할 수 있기 때문에 사용법을 제대로 익혀두면 좋다.
  • 오늘은 파이썬 기초 이론 강의를 복습 차원에서 들었는데, 다 아는 부분이라고 생각했었는데 꽤나 많은 것을 배울 수 있었던 것 같다. fstring방법이나 raw_string 방법의 경우는 직접 찾아보지 않으면 모르는 것들이었고 FunctionTypeHints도 다른 코드에서 봤지 배운건 또 처음이었던 것 같다. 같은 내용을 공부하더라도 계속해서 새로운 것을 배울 수 있다는 점을 기억하고 복습도 열심히 해야겠다.