파이썬스러운 코드, 어떤 차이가 있는 건가요?
조회수 855회
파이썬 코드 배열을 어떻게 줄여볼까 찾아보다가 다음과 같은 예시를 보게되었습니다.
arr = [1, 2, 3, 4]
# 파이썬스럽지 않은 코드
result = []
for i in range(len(arr)):
if arr[i] % 2 == 1:
result.append(arr[i])
# 파이썬스러운 코드 (List comprehension 을 사용)
result = [num for num in arr if num % 2]
'파이썬스러운' 이라는 말은 잘 이해가 가지는 않았지만, 한 줄의 코드로 정리가 가능하다는 것을 알 수 있는데요.
그런데 한 가지 궁금증이 생겼습니다.
'파이썬스럽지 않은 코드'와 '파이썬스러운 코드'는 코드를 실행하는 것에 있어서 어떤 차이가 있는 것일까?하고요.
파이썬스러운 코드라는 것이 파이썬의 작업 효율을 최대로 만들어준다는 의미로 파이썬스럽다고 하는 것인지,
그저 파이썬에서만 이렇게 코드를 단순하게 만들 수 있기 때문에 파이썬스러운 코드라고 하는 것인지에 대해 궁금합니다.
안타깝게도 이에 대한 글을 찾아볼 수 없어서 혹시 다른 분들에게 이에 대한 답을 알 수 있지 않을까 싶어 이렇게 질문을 남겨봅니다.
3 답변
-
파이써닉한 코드를 작성하라고 하는 것은 성능상의 문제보다는 파이썬의 기능들을 활용해서 간결하게 작성하라는 것입니다.
코드가 잛을수록 버그의 수도 줄어들 가능성이 크고 유지보수에도 도움이 되므로 간결하게 유지되는 것이 좋습니다.
간혹 if, for 로 depth 가 4~5가 되는 코드를 보게 되는데 가독성도 떨어지고 유지보수도 힘든 이런 코드는 좋은 코드가 아닙니다. 이런 코드는 리팩토링 대상이고 함수로 분리를 고민해보고 최대한 간결하게 작성하도록 해야 합니다.
-
간단히 True 하나인 if 중첩구문이면 아래와 같이 할 수 있습니다.
def one(): print("one") def two(): print("two") def three(): print("three") value = 10 if value > 10: one() elif value < 10: two() elif value == 10: three() three d = {value > 10:one, value < 10:two, value == 10:three} d[True]() three
-
댓글 입력