[20] Never Use for Loop Variables After the Loop Ends
·
EffectivePython_125
Never로 시작하는 만큼 오늘은 좀 중요한 내용인 듯하다. 오늘은 왜 루프가 끝난 뒤에 루프 변수를 사용하면 안 되는지, 그리고 더 안전한 코드를 작성하는 방법에 대해 알아보도록 하자. 1. 파이썬의 독특한 루프 변수 scope대부분의 프로그래밍 언어에서는 for 루프 안에서 선언된 변수는 루프가 종료되면 메모리에서 사라진다. (block scope)하지만 파이썬에서는 for 루프가 끝난 후에도 루프 변수가 현재 스코프에 그대로 살아있다. for i in range(3): print(f"Inside {i=}")print(f"After {i=}")# 출력# Inside i=0# Inside i=1# Inside i=2# After i=2 2. 루프 변수를 밖에서 사용하는 꼼수와 그에 대한 치명적인..
[19] Avoid else Blocks After for and while Loops
·
EffectivePython_125
오늘 알게 된 문법은 좀 특이하다. 보통 else라고 하면 if 뒤에 등장하여 "앞의 블록이 일어나지 않으면 이 블록을 실행하라"는 의미를 가진다. 하지만 파이썬의 루프 문(for, while)은 대부분의 다른 프로그래밍 언어에는 없는 기능을 제공하는데, 루프의 반복되는 내부 블록 뒤에 else 블록을 사용할 수 있다. for i in range(3): print("Loop", i)else: print("Else block!")# Loop 0# Loop 1# Loop 2# Else block! 하지만 가능하다는 것과는 별개로, 루프 뒤에 else 블록을 사용하는 것은 완전히 피해야 한다고 한다. 그 이유를 지금부터 알아보도록 하자. 1. 직관과 정반대로 동작한다맨 처음에도 말했듯이, 일반적인 if/e..
[16] Prefer Catch-All Unpacking over Slicing
·
EffectivePython_125
https://effectivepython.com/ Effective Python › The Book: Third EditionEffective Python will prepare you to make a big impact with Python.effectivepython.com이런 3일 연속 slicing과 관련된 내용이다..!대신 오늘은 보통 파이썬 기본 문법에선 잘 다루지 않지만 유용하게 쓰일 수 있을 것 같은 Starred Expression을 공부해 보도록 하자!여러 형태의 데이터를 다루다 보면 가변적인 길이의 시퀀스를 분리해야 할 일이 생긴다. (단어 리스트 같은 것)이때 인덱스로 일일이 슬라이싱하다 보면 뒷골이 당길 때가 있는데, 이때 필요한 것이 * 연산자이다. (starred expr..
[14] Know How to Slice Sequences
·
EffectivePython_125
https://effectivepython.com/ Effective Python › The Book: Third EditionEffective Python will prepare you to make a big impact with Python.effectivepython.com오랜만에 다시 파이썬 팁을 공부해본다. 아이템 14는 sequence를 조각내는 기초 문법에 대한 얘기인데, 한번쯤 생각해볼만한 내용들이 들어있다!완전 기본 문법은 제외하고 팁이라 할만한 것들을 기록하자. 유연한 경계 처리슬라이싱은 리스트의 범위를 벗어난(out-of-bounds) 인덱스를 넣어도 indexError를 발생시키지 않는다.예를 들어, 길이가 3인 리스트 a에서 a[:20]을 요구해도 에러가 나지 않고 값 3개만 ..