[파이썬 알고리즘 인터뷰] 파이썬
아래 책을 보고 필요한 부분만 정리한 내용
![]() |
|
github.com/onlybooks/algorithm-interview
오랜만에 코딩에 대해 공부한다. 위의 책을 구매했는데, 요근래 코테를 너무 안한 것 같아서 공부차원으로 책을 읽었다. 앞에 1부는 날리고 2부인 파이썬부터 정리해야겠다.
몇번 면접을 보면서, 내 포폴이나 이력서엔 파이썬을 중-상으로 적어놨었다. 그러나 나는 파이썬마저도 '하'라는 것을 느꼈다. 기본기가 정말 부족했다. 나는 지금까지 무슨 공부를 해온건지 가끔 너무 좌절을 겪는다. 하지만, 아직 나는 아직 살 날도 그 안에 공부할 날도 많으니 좌절만 하지말고 부족을 느낀만큼 열심히 해야겠다. 밤이라 그런지 왜이러는가...공부를 시작해야게따 😄😄;;
- 인덴트(Indent): 흔히 알고있던 4번 띄어쓰기, Tab
- 파이썬 개선 제안서(Python Enhancement Proposals:PEP): 새로운 기능을 제안하고 커뮤니티 의견을 반영하여 파이썬의 디자인 결정을 문서화하는 파이썬의 주요 프로세스
- 스네이크 케이스:'_'로 변수명을 구분짓는 행위, 파이썬은 스네이크 케이스(반대는 카멜케이스)를 지향함
충격적이다.. 난 카멜케이스에 엄첨 익숙해져있어 모든 코딩을 그렇게 해왔다. 파이썬도 마찬가지. ....어디가서 파이썬 할줄 안다고 하면 안될 것 같다..😭
- Type Hint: 파이썬 3.5부터 추가
- a:str = "1"
- a:int = 1
- def fn(a:int)->bool:
- mypy: 타입에러를 체크할 수 있음
본 내용을 면접에서 받은적이 있다. 근데 나는 한번도 파이썬에서 타입을 선언하거나 고민한적이 없었고, 단연 대답을 하지 못했었다. 세번째 리턴타입을 뱉는 형태도 leetcode를 접하면서 처음알게되었었다. 코드의 규모가 커지면 발생할 수 있는 문제점을 예방하기 위해서라고
한다.
- list comprehension: [i for i in lis]
- 딕셔너리도 가능(2.7 이후): {k:v for k,v in dic.items()}
리스트 컴프리헨션은 내가 좋아하는 기능 중 하나다. 너무 좋다. 딕셔너리도 되는줄 처음알았다...
- 제네레이터: yield를 사용
- 아래 코드를 이용하면 따로 메모리에 값을 저장하지 않음
def get_natural_number():
n = 0
while True:
n+=1
yield n
g = get_natural_number()
for _ in range(0, 100):
print(next(g))
#다음과 같이 여러개의 값을 리턴할 수도 있다.
def generator():
yield 1
yield 'string'
yield True
g = generator()
next(g) >1
next(g) >'string'
next(g) >True
- range 클래스:아래는 메모리 점유율이 다름
- a = [n for n in range(0,100)]: 이미생성을 했으므로 점유함
- b = range(100): 필요할 때 사용하므로 아직 점유하지 음
충격적인 것은 아래와 같이 range class로 선언해도, index로 접근 시 사용할 때 바로 생성을 하기때문에 전혀 불편함이 없다는 것이였다..
- divmod(5,3)
- print("a","b",sep=",")
- print("a","b",end=" ")
- print("{0}:{1}".format(idx,"fruit")
- print("{}:{}".format(idx, "fruit")
- f-string(3.6이상 지원):print(f"{idx}:,"fruit"")
- locals()
- pprint모듈을 이용하면 줄바꿈과 함께 출력해 보기 편함:pprint.pprint(locals())
가장 마지막에 적은 locals는 클래스내의 모든 변수값을 딕셔너리 형태로 출력해준다.
www.python.org/dev/peps/pep-0008/
PEP 8 -- Style Guide for Python Code
The official home of the Python Programming Language
www.python.org
google.github.io/styleguide/pyguide.html
styleguide
Style guides for Google-originated open-source projects
google.github.io
위 가이드에 따라 코드를 작성하는 것이 좋다. 일일히 보기가 어렵다면 파이참과 같은 ide를 사용하면 열심히 경고를 띄어주어 작성하는데 도움을 준다.

#가변사용지양
def fun(a,b:Mapping=[]) => ❌
def fun(a=None) => ⭕️
#몇가지 꿀팁
if len(user)==0 ❌
if not user ⭕️
if foo is not none and not foo ❌
if foo == 0 ⭕️
if not i%10 ❌
if i%10 == 0 ⭕️
The Zen of Python. 파이썬을 파이썬답게..
