🐸 개인적으로 안 쓸 이유가 없는, 매우 간편하고 유용한 옵션이라고 생각한다.
형식화(formatting)이란 미리 정의된 문자열에 데이터 값을 끼워 넣어서 사람이 보기 좋은 문자열로 저장하는 과정이다.
파이썬에서 이를 할 때, f-string을 이용한 방법 외에는 전부 치명적인 단점이 있다.
또, f-string을 이용한 방법은 C스타일의 형식화 문자열에 %연산자를 활용하는 경우나, str.format메서드를 사용하는 경우보다 항상 더 간결하고 짧다.
따라서, 제공하는 표현력, 간결성, 명확성을 고려할 때, f-string은 파이썬 프로그래머가 사용할 수 있는 최고의 형식화 옵션이다.
식이 복잡해지기 시작하면, 바로 식을 더 작은 조각으로 나누어 로직을 도우미 함수로 옮길지 고려해야 한다.
코드를 짧게 쓰는 것보다 더 가치있는 것은 코드를 가독성있게 쓰는 것이다.
🐸 파이썬이 다른 언어에 비해 간편한 주요한 이유 중 하나인 것 같다.
파이썬에는 언패킹 구문이 있다. 이를 사용하면 한 문장 안에서 여러 값을 대입할 수 있다.
def bubble_sort(a):
for _ in range(len(a)):
for i in range(1, len(a)):
if a[i] < a[i-1]:
# LIKE THIS
a[i-1], a[i] = a[i], a[i-1]
snacks = [('베이컨', 350), ('도넛', 240), ('머핀', 190)]
for rank, (name, calories) in enumerate(snacks, 1):
print(f"#{rank}: {name} 은 {calories} 칼로리입니다.
range함수를 이용해 list의 원소를 탐색하려면, list의 길이를 알아야 하고, 인덱스를 사용해 배열의 원소에 접근해야 함으로 코드를 읽기 다소 어렵다.
flavor_list = ['바닐라', '초코', '딸기', '포도']
for i in range(len(flavor_list)):
print(f'{i+1}: {flavor_list[i]})
이 때, enumerate 함수를 이용하면 된다.
enumerate 함수는 이터레이터를 지연 계산 제너레이터(lazy generator) 로 감싼다.
enumerate는 루프 인덱스와 이터레이터의 다음 값으로 이루어진 쌍을 넘겨준다.
for i, flavor in enumerate(flavor_list, 1):
print(f'{i}: {flavor})