'파이썬 알고리즘 인터뷰'라는 책을 구입하였다. 앞으로는 공부한 내용을 정리하여 포스팅하고자 한다. 이 책을 공부하는 목적은 알고리즘 공부와 파이썬 기본적인 실력을 향상시키고자 위함이다.
1. Indent(들여쓰기)
파이썬의 개발은 PEP(Python Enhancement Proposals) Process를 통해 진행된다고 한다. PEP는 순서대로 번호가 부여되어있고 파이썬에 대한 코딩 가이드를 제시한다. 책에서는 PEP8에 대한 내용을 언급하고 있는데 그 내용 중 하나가 Indent(들여쓰기)이다.
(Python PEP8 : www.python.org/dev/peps/pep-0008/)
1) 파이썬의 PEP8에 따라 들여쓰기는 4칸 공백을 원칙으로 한다. 아래와 같이 for문 등 단락이 구분되어야 할 경우 4칸 공백을 가이드로 한다는 내용이다.
<코드>
index = int(input("숫자를 입력하세요:"))
for i in range(1, index+1):
globals()['test'+str(i)] = i * 100
2) 함수를 사용할 경우 입력되는 매개변수의 길이가 길어질 경우 아래처럼 줄을 나누어준다.
<예시1>
def practice_function(prac_var1, prac_var2,
prac_var3, prac_var4):
<예시2>
def practice_function(
prac_var1, prac_va2,prac_var3,
prac_var4):
pass
3) 파이썬 개발시 대표적으로 많이 사용하는 Pycharm에서는 PEP8 들여쓰기 기능을 자동으로 제공한다. TAP을 누르거나 ENTER 키를 누르면 들여쓰기가 자동으로 반영 된다. 최근에 내가 사용하고 있는 VS Code는 TAP은 반영하지만 아쉽게도 ENTER에 대한 들여쓰기는 반영되지 않는 것 같다.
2. Naming Convention(변수명 설정 룰)
파이썬은 PEP8에 따라 변수 네이밍은 '스네이크 케이스'를 지향한다. 변수 네이밍하는 방식은 카멜 케이스, 파스칼 케이스, 스네이크 케이스 3가지로 나뉜다고 한다.
1) 카멜 케이스(Camel case)
-. 낙타(Camel)에서 유래 된 이름, 단어를 대소문자로 구분하여 섞어서 작명하는 방식(첫문자는 소문자)
-. 자바의 대표적인 표기 방식
ex) camelCase, namingConvention
-. 첫 글자에 숫자 불가, 대소문자 구분 됨.
2) 파스칼 케이스(Pascal Case)
-. 카멜 케이스의 경우 첫 문자는 소문자이고, 그 다음 단어는 대문자로 구분
-. 파스칼의 경우 첫문자도 대문자로 구분
ex) PascalCase, NamingConvention
3) 스네이크 케이스(Snake case)
-. 뱀(Sake) 모양에서 유래됐다고 함.
-. 각 단어를 언더바(_)로 구분함. 파이썬 PEP8에서 권장하는 방식
-. 일반적으로 소문자로 표기하나, 상황에 따라 첫문자를 대문자로 하기도 함.
ex) snake, case, snake_case
3. Type hint(변수 타입 명시하기)
파이썬의 PEP484에서는 Type Hints에 대한 가이드를 다루고 있다.. 타입 힌트는 함수 선언시 입력되는 변수나 리턴되는 값에대해 명시적으로 표현하는 방법이다.
(PEP484 : : https://www.python.org/dev/peps/pep-0484/)
다음과 같은 덧셈, 나눗셈 함수가 선언되었다고 해보자. 물론 우리는 add 함수와 div 함수의 결과가 각각 정수와 실수 type인 것을 직관적으로 알 수 있다.
<Type hint가 없는 코드>
def add(var1, var2):
sum = var1 + var2
return sum
def div(var1, var2):
div = var1 / var2
return div
만약 복잡한 프로그램이라고 가정하고 입력되는 매개변수들이 많아지고 변수타입도 제각각 다르다고 생각해봤을 때, 아래와 같이 매개변수의 type과 리턴값의 type을 명시할 수 있다.
<Type hint를 명시 한 코드>
def add(var1: int, var2: int) -> int:
sum = var1 + var2
return sum
def div(var1: int, var2: int) -> float:
div = var1 / var2
return div
sum_result = add(1, 2)
div_result = div(3, 2);
print("덧셈:", sum_result)
print("나눗셈:", div_result)
-. var1: int 또는 var2 : int
함수에서 입력되는 매개변수의 타입을 명시한 것이다.
-. add() -> int
함수의 마지막에 -> int는 리턴되는 결과값의 타입을 명시한 것이다.
책에서는 mypy라는 모듈을 소개하고 있다. mypy는 타입 힌트에 오류가 있는지 검사해주는 모듈이다. mypy가 없어 pip 명령어 통해 설치를 하고
사용법 : mypy 파일명.py
mypy 파일명.py 통해 위 코드를 실행해보자. 이상이 없으면 아래와 같이 출력된다.
(이상이 있는 경우 error 메시지를 출력 함)
※ '파이썬 알고리즘 인터뷰' - 박상길 저 를 참고하였습니다.
www.yes24.com/Product/Goods/91084402?OzSrank=2
'코딩 > Algorithm, 자료구조' 카테고리의 다른 글
[Python/파이썬] 자료구조 - 링크드리스트(Linked List) 1 (2) | 2021.05.31 |
---|---|
[Python/파이썬] 자료구조 - 큐(Queue)와 스택(Stack) (1) | 2021.05.24 |
[Python/파이썬] 자료구조 - 배열(Array) (0) | 2021.05.23 |
[Python/파이썬] 문자열 처리 - Palindrom(팰린드롬) (0) | 2021.05.15 |
[Python/파이썬]map, filter, list comprehension (0) | 2021.05.09 |