카테고리 없음

[코드몬스터랩] 아무도 이해하지 못하는 파이썬 One-Liners를 작성하지 마세요 - 파주 운정 코딩 교육

코드몬스터랩 2025. 2. 14. 17:41

 

 

 

 

Don’t Write Python One-Liners That Nobody Understands

아무도 이해하지 못하는 파이썬 One-Liners를 작성하지 마세요

 

 


 

 

 

이걸 배우고 나면 후회하지 않을 것입니다!!!!

 

무조건 파이썬 한 줄짜리 코드를 작성하는 것을 반대하지는 않습니다. 하지만 때로는 코드를 읽고 이해하기 매우 어렵게 만들기도 합니다.

그리고 몇 주 후에 작성한 코드를 이해하지 못할 때도 있습니다.

 

 

종종 한 줄짜리 글은 우아하고 짧고 재미있어 보이기 때문에 유혹적일 수 있습니다. 하지만 나중에 디버깅하려고 하면 어떤 로직을 작성했는지 이해할 수 없는 경우가 있기 때문에 상황이 더 나빠질 수 있습니다.

 

간결한 코드보다는 항상 간단한 코드를 우선시하세요.

 

모든 것을 자세히 이해합시다.

 

 

 

 

One-Liners 문제

 

 

1. 가독성이 떨어질 수 있습니다

 

우리가 작성한 코드는 다른 사람이 읽는 경우가 가장 많습니다. 따라서 누구나 쉽게 이해할 수 있도록 코드를 단순하게 유지하세요. 한 줄에 여러 연산을 한 번에 결합하는 경우, 여러분은 물론 다른 사람도 이해하기 매우 어려울 것입니다.

 

풀어야 할 퍼즐처럼 느껴질 것입니다.

 

예를 들어봅시다.

result = [x**2 for x in range(20) if x % 2 == 0]
 

 

보시다시피 간결합니다. 범위를 반복한 다음 숫자가 짝수인지 홀수인지 확인한 다음 숫자를 제곱하는 세 가지 작업을 한 번에 수행합니다.

 

하지만 이를 분할하면... 더 명확해집니다.

squares = []
for x in range(20):
    if x % 2 == 0:
        squares.append(x**2)
 

 

 

 

 

2. 디버깅은 악몽이 될 것입니다

 

한 줄에 여러 가지 작업을 수행하면 어디가 잘못되었는지 파악하기가 매우 어려울 것입니다.

 

예를 들어 이 한 줄짜리 코드를 디버깅하려고 한다고 가정해 봅시다.

result = {key: value for key, value in zip(keys, values) if key.startswith('a') and value > 10}
 

 

이 경우 문제가 어디에 있는지 파악하기 어렵기 때문에 디버깅이 매우 어렵습니다. zip() 또는 startswith() 조건에 문제가 있을 수 있습니다.

 

그러나 우리는 쉽게 이해할 수 없습니다.

 

 

 

 

3. 지난 코드를 이해할 수 없다

 

일주일, 한 달, 1년 전에 작성했던 코드를 다시 보면 이해하기 어려워집니다. 자신이 적용한 논리를 이해하기 어려울 것입니다.

 

 

 

 

 

How to avoid these one-liners

이러한 one-liners을 피하는 방법

 

이러한 시나리오를 피할 수 있는 방법을 설명하겠습니다.

 

 

 

1. 로직을 세분화하여 단순화

 

로직을 여러 줄로 작성하면 이해하고 디버깅하기 쉬워집니다.

 

따라서 이렇게 작성하는 대신

filtered_square = [x**2 for x in numbers if x > 0 and x % 2 == 0]
 

 

이렇게 작성합니다.

positive_numbers = [x for x in numbers if x > 0]
even_numbers = [x for x in positive_numbers if x % 2 == 0]
squares = [x**2 for x in even_numbers]
 

 

 

 

2. 변수에 설명이 포함된 이름을 사용하세요

 

변수의 이름을 X나 Y와 같은 식으로 짓지 말고 좀 더 명확하게 지으세요. 변수에 무엇이 저장되어 있는지 설명하세요.

 

예를 들어 다음과 같이 작성하는 대신,

result = sum([x for x in data if x > threshold])
 

 

쓰기.

filtered_values = [value for value in data if value > threshold]
total = sum(filtered_values)
 

 

 

 

3. 코드에 주석 달기

 

여러 연산을 결합하는 한 줄짜리 코드를 작성해야 한다면 주석을 추가하여 설명하세요. 그러면 누가 읽더라도 쉽게 이해할 수 있습니다.

def is_valid_number(x):
    return x > 0 and x % 2 == 0

def square_number(x):
    return x**2
result = [square_number(x) for x in numbers if is_valid_number(x)]
 

 

하지만 분할하여 간단하게 만드는 것이 더 좋습니다.

 

 

 

 

4. 함수 사용 시도하기

 

어떤 논리가 너무 많이 반복되는 경우 이 논리에 대한 함수를 만드세요.

 

예를 들어,

def is_valid_number(x):
    return x > 0 and x % 2 == 0

def square_number(x):
    return x**2
result = [square_number(x) for x in numbers if is_valid_number(x)]
 

 

 

 

5. 중첩된 comprehension는 피하세요

 

우리는 종종 작업에 중첩된 comprehension을 사용합니다. 이렇게 하지 마세요.

matrix = [[x*y for y in range(5)] for x in range(5)]
 

 

인상적으로 보이지만 초보자 같은 사람에게는 혼란스러울 수 있습니다. 따라서 이렇게 작성하세요.

matrix = []
for x in range(5):
    row = []
    for y in range(5):
        row.append(x * y)
    matrix.append(row)
 

 

 

 

6. 오류를 신중하게 처리하세요

 

전체 로직을 한 줄에 적용하려고 하면 오류 처리에 신경 쓰지 않게 됩니다. 그냥 무시해버립니다.

 

예를 들어 다음과 같이 작성합니다.

result = [1 / x for x in numbers if x != 0]
 

 

하지만 숫자가 아닌 값이 포함된 경우에는 어떻게 될까요? 이 오류를 처리하는 메커니즘은 적용되지 않습니다.

 

따라서 이렇게 하세요.

results = []
for x in numbers:
    try:
        if x != 0:
            results.append(1 / x)
    except TypeError:
        pass
 

 

따라서 다음에 코드를 작성할 때는 일주일 또는 한 달 후에 이 코드를 이해할 수 있는지 스스로에게 물어보세요.

 

 

 

[코드몬스터랩] 상호 의존성을 기반으로 관계를 구축하는 방법 - 파주 운정 코딩 교육

How to Build a Relationship Based on Interdependence상호 의존성을 기반으로 관계를 구축하는 방법    우리 대부분은 특히 연애 관계에서 다른 사람과의 연결을 중요하게 생각합니다. 사실, 우리는 연결에

kayoko.tistory.com

 

 

[코드몬스터랩] 박사 과정 학생과 학계 종사자가 꼭 알아야 할 9가지 도구 - 파주 운정 코딩 교육

9 Must-Know Tools For PhD Students And Academics박사 과정 학생과 학계 종사자가 꼭 알아야 할 9가지 도구 당신의 삶을 바꿀 것입니다       * 아래는 'Axel Casas' 의 글을 번역한 글입니다.  건강한 생산

kayoko.tistory.com

 

 

 

 

#파주, #운정, #코딩, #코딩교육, #프로그램, #프로그래밍, #코드몬스터랩, #헬로우잡스, #안녕잡스

#일산, #온라인, #파주운정신도시, #ai, #교육, #AI직업, #코딩학원, #맞춤교육, #헬로잡스, #목동동

파주, 운정, 코딩, 코딩교육, 프로그램, 프로그래밍, 코드몬스터랩, 헬로우잡스, 안녕잡스

일산, 온라인, 파주운정신도시, ai, 교육, AI직업, 코딩학원, 맞춤교육, 헬로잡스,목동동

 

 

 

 

 

 


과정을 돋보이게 하는 교육 

코드몬스터랩

교육상담문의 : 010-7912-4437

 

 

 

 

 

 

 

참조 : https://python.plainenglish.io/dont-write-python-one-liners-that-nobody-understands-including-you-later-1a6d741bd951

728x90
반응형