> 백엔드 개발 > 파이썬 튜토리얼 > 이런 식으로 Python 함수를 작성하지 마세요!

이런 식으로 Python 함수를 작성하지 마세요!

Susan Sarandon
풀어 주다: 2025-01-23 16:14:12
원래의
788명이 탐색했습니다.

Just Stop Writing Python Functions Like This!

간결하고 읽기 쉽고 효율적인 코드를 작성하는 것은 모든 개발자가 향상하려고 노력하는 기술입니다. Python에서는 함수 작성에 따라 코드베이스의 품질이 결정될 수 있습니다. 그러나 초보자와 숙련된 개발자 모두 많은 개발자가 Python 함수를 작성할 때 일반적인 함정에 빠집니다. 이러한 오류는 가독성, 유지 관리성 및 성능 문제를 일으킬 수 있습니다. 이 기사에서는 피해야 할 Python 함수의 일반적인 패턴을 살펴보고 더 나은 코드를 위해 이를 개선하는 방법에 대해 논의합니다.

1. 매개변수가 너무 많은 함수 작성을 피하세요

질문:

함수에 긴 매개변수 목록이 포함되어 있으면 문제가 있을 수 있습니다. 함수가 너무 많은 매개변수를 허용하면 해당 기능을 이해하기 어려워지고 오류 가능성이 높아집니다. 또한 함수가 너무 많은 작업을 수행하므로 단일 책임 원칙에도 위배됩니다.

<code class="language-python">def process_data(a, b, c, d, e, f, g, h, i, j):
    # 参数过多,难以理解
    pass</code>
로그인 후 복사
로그인 후 복사

해결책:

키워드 인수 또는 사전을 사용하여 관련 데이터를 전달하거나 함수를 더 작은 함수로 분할하는 것을 고려하세요. 이렇게 하면 함수를 더 쉽게 이해할 수 있습니다.

<code class="language-python">def process_data(data):
    # 使用字典或类来分组相关数据
    pass</code>
로그인 후 복사
로그인 후 복사

2. 함수 내에서 전역 변수 사용을 중단하세요

질문:

편리해 보일 수도 있지만 함수 내에서 전역 변수를 사용하면 코드와 전역 상태가 긴밀하게 결합됩니다. 이로 인해 코드를 테스트, 디버그 및 유지 관리하기가 더 어려워집니다.

<code class="language-python">my_data = [1, 2, 3]

def process_data():
    # 访问全局变量
    total = sum(my_data)
    return total</code>
로그인 후 복사
로그인 후 복사

해결책:

전역 상태에 의존하는 대신 변수를 함수에 명시적으로 전달합니다. 이는 함수를 더욱 예측 가능하고 재사용 가능하게 만듭니다.

<code class="language-python">def process_data(data):
    return sum(data)</code>
로그인 후 복사
로그인 후 복사

3. 반환값 없이 함수를 작성하지 마세요

질문:

반환 값이 없는 함수는 일반적으로 효율적으로 작동하지 않는다는 의미입니다. 함수는 프로그램의 다른 부분에서 쉽게 사용할 수 있도록 의미 있는 값을 반환해야 합니다. 이는 코드 재사용성과 테스트 가능성에 매우 중요합니다.

<code class="language-python">def process_data(data):
    print("Processing data")  # 没有返回值</code>
로그인 후 복사

해결책:

함수가 의미 있는 결과를 반환하는지 확인하세요. 함수가 부작용(예: 파일에 쓰기)만 수행하는 경우에도 반환 값을 사용하여 작업의 성공 또는 실패를 나타내는 것이 좋습니다.

<code class="language-python">def process_data(data):
    print("Processing data")
    return True  # 返回有意义的值</code>
로그인 후 복사

4. 불필요한 *args 및 `kwargs`** 사용을 중지하세요

질문:

*args 및 **kwargs는 함수를 유연하게 만드는 강력한 도구이지만, 과도하게 사용하면 혼란을 야기하고 함수가 예측할 수 없는 동작을 하게 만들 수 있습니다. 또한 함수가 어떤 인수를 기대하는지 명확하지 않기 때문에 가독성이 떨어집니다.

<code class="language-python">def process_data(*args, **kwargs):
    # 没有明确需求地使用 *args 和 **kwargs
    pass</code>
로그인 후 복사

해결책:

가능하면 *args 및 **kwargs 대신 특정 인수를 사용하세요. 필요한 경우 예상되는 입력 유형을 명확하게 문서화하십시오.

<code class="language-python">def process_data(data, operation_type):
    pass</code>
로그인 후 복사

5. 함수에서 중첩 루프 사용을 중지하세요(가능한 경우)

질문:

함수 내부의 중첩 루프는 특히 대규모 데이터 세트로 작업할 때 코드를 읽기 어렵게 만들고 속도를 저하시킬 수 있습니다. Python에는 깊게 중첩된 루프 없이 동일한 결과를 얻는 더 효율적인 방법이 있는 경우가 많습니다.

<code class="language-python">def process_data(a, b, c, d, e, f, g, h, i, j):
    # 参数过多,难以理解
    pass</code>
로그인 후 복사
로그인 후 복사

해결책:

목록 이해 또는 map(), filter() 또는 itertools와 같은 내장 함수를 사용하여 논리를 단순화하고 가독성과 성능을 향상시킵니다.

<code class="language-python">def process_data(data):
    # 使用字典或类来分组相关数据
    pass</code>
로그인 후 복사
로그인 후 복사

6. 너무 긴 함수 작성은 피하세요

질문:

지나치게 긴 함수는 단일 책임 원칙을 위반하며 유지 관리가 어렵습니다. 긴 함수는 종종 여러 작업을 수행하므로 테스트, 디버그 및 수정이 어렵습니다.

<code class="language-python">my_data = [1, 2, 3]

def process_data():
    # 访问全局变量
    total = sum(my_data)
    return total</code>
로그인 후 복사
로그인 후 복사

해결책:

기능을 더 작고 관리하기 쉬운 기능으로 나눕니다. 모든 함수는 한 가지 일을 해야 하며, 그 일을 잘 수행해야 합니다.

<code class="language-python">def process_data(data):
    return sum(data)</code>
로그인 후 복사
로그인 후 복사

결론

이러한 일반적인 실수를 피함으로써 Python 함수는 더 효율적이고, 더 읽기 쉽고, 유지 관리하기 더 쉬워질 것입니다. 목표는 간단하고 깨끗하며 이해하기 쉬운 코드를 작성하는 것입니다. 함수는 간결하고 집중적이며 모듈식이어야 합니다. 이렇게 하면 코드를 더 쉽게 유지 관리하고 디버그할 수 있으며 사용하기가 더 즐거워집니다. 그러니 다음에 함수 작성을 시작할 때 스스로에게 물어보세요. 이것이 최고의 디자인인가?

위 내용은 이런 식으로 Python 함수를 작성하지 마세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿