"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python 모범 사례: 깔끔하고 효율적이며 유지 관리 가능한 코드 작성

Python 모범 사례: 깔끔하고 효율적이며 유지 관리 가능한 코드 작성

2024-11-06에 게시됨
검색:872

Python Best Practices: Writing Clean, Efficient, and Maintainable Code

Python은 단순성, 가독성 및 다양성으로 인해 가장 널리 사용되는 프로그래밍 언어 중 하나입니다.

노련한 개발자이든 초보자이든 관계없이 깔끔하고 효율적이며 유지 관리가 가능한 코드를 작성하려면 Python의 모범 사례를 따르는 것이 중요합니다.

이 블로그 게시물에서는 Python 코드를 작성할 때 염두에 두어야 할 몇 가지 주요 모범 사례를 살펴보겠습니다.


1 - PEP 8 지침 준수

PEP 8은 Python 코드의 스타일 가이드로, 코드 형식 지정 및 구조화에 대한 규칙을 제공합니다.

PEP 8의 일부 핵심 사항은 다음과 같습니다.

  • 들여쓰기: 들여쓰기 수준당 공백 4개를 사용합니다.
  • 줄 길이: 모든 줄을 최대 79자로 제한합니다.
  • 빈 줄: 최상위 함수 및 클래스 정의를 두 개의 빈 줄로 구분하고, 클래스 내부의 메서드 정의를 한 개의 빈 줄로 구분합니다.
  • 가져오기: 표준 라이브러리 가져오기, 관련 타사 가져오기, 로컬 애플리케이션/라이브러리별 가져오기 순서로 그룹화하여 파일 상단에 가져오기를 배치합니다.

PEP 8을 준수하면 코드가 더 읽기 쉽고 다른 Python 코드베이스와의 일관성이 향상됩니다.


2 - 설명적이고 간결한 변수 이름 작성

설명적이면서도 간결한 변수 이름을 선택하세요.

루프 카운터와 같은 경우를 제외하고 단일 문자 변수를 사용하지 마세요.
예를 들어:

# Bad
a = 10

# Good
number_of_users = 10

설명적인 변수 이름은 코드를 자체적으로 설명할 수 있도록 하여 광범위한 주석의 필요성을 줄이고 다른 사람(그리고 미래의 자신)이 더 쉽게 이해할 수 있도록 해줍니다.


3 - 목록 이해 및 생성기 표현식 사용

목록 이해 및 생성기 표현식은 목록 및 생성기를 생성하는 간결한 방법을 제공합니다.

루프를 사용하는 것보다 더 읽기 쉽고 더 빠른 경우가 많습니다.

# List comprehension
squares = [x**2 for x in range(10)]

# Generator expression
squares_gen = (x**2 for x in range(10))

목록 이해는 결과 목록이 메모리에 들어갈 만큼 작을 때 가장 좋습니다.

더 큰 데이터 세트에 생성기 표현식을 사용하여 메모리를 절약하세요.


4 - Python의 내장 함수 및 라이브러리 활용

Python의 표준 라이브러리는 방대하므로 사용자 정의 코드를 작성하는 것보다 내장 함수를 사용하는 것이 더 나은 경우가 많습니다.

예를 들어, 목록의 최대값을 찾기 위해 함수를 직접 작성하는 대신 Python에 내장된 max() 함수를 사용하세요.

# Bad
def find_max(lst):
    max_val = lst[0]
    for num in lst:
        if num > max_val:
            max_val = num
    return max_val

# Good
max_val = max(lst)


내장된 함수와 라이브러리를 사용하면 시간을 절약하고 오류 가능성을 줄일 수 있습니다.


5 - DRY 원칙을 따르세요(반복하지 마세요)

코드 중복을 피하세요.

동일한 코드를 두 번 이상 작성하는 경우 함수나 클래스로 리팩토링하는 것을 고려해 보세요.

이렇게 하면 코드베이스의 크기가 줄어들 뿐만 아니라 유지 관리도 더 쉬워집니다.

# Bad
def print_user_details(name, age):
    print(f"Name: {name}")
    print(f"Age: {age}")

def print_product_details(product, price):
    print(f"Product: {product}")
    print(f"Price: {price}")

# Good
def print_details(label, value):
    print(f"{label}: {value}")

DRY 원칙은 더욱 모듈화되고 재사용 가능한 코드로 이어집니다.


6 - 가상 환경 사용

Python 프로젝트, 특히 종속성이 있는 프로젝트를 작업할 때는 가상 환경을 사용하는 것이 가장 좋습니다.

가상 환경을 사용하면 프로젝트별로 종속성을 관리하여 다른 프로젝트에 사용되는 패키지 간의 충돌을 피할 수 있습니다.

# 
Create a virtual environment
python -m venv myenv

# Activate the virtual environment
source myenv/bin/activate  # On Windows: myenv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

가상 환경을 사용하면 프로젝트의 종속성을 격리하고 쉽게 재현할 수 있습니다.


7 - 단위 테스트 작성

코드가 예상대로 작동하는지 확인하고 변경 시 회귀를 방지하려면 테스트 작성이 중요합니다.

Python의 단위 테스트 모듈은 테스트 작성을 위한 훌륭한 출발점입니다.

import unittest

def add(a, b):
    return a   b

class TestMathFunctions(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)
        self.assertEqual(add(-1, 1), 0)

if __name__ == '__main__':
    unittest.main()

개발하면서 정기적으로 테스트를 실행하면 코드가 견고하고 버그 없이 유지됩니다.


8 - 의미 있는 주석과 독스트링을 사용하세요

깨끗한 코드는 설명이 필요 없지만 복잡한 논리, 가정 및 결정을 설명하는 데 주석과 독스트링은 여전히 ​​중요합니다.

댓글을 자제하고 자신이 한 일보다는 왜 그 일을 했는지에 집중하세요.

def calculate_discount(price, discount):
    """
    Calculate the price after applying the discount.

    Args:
    price (float): Original price
    discount (float): Discount percentage (0-100)

    Returns:
    float: Final price after discount
    """
    return price * (1 - discount / 100)

좋은 주석과 독스트링은 코드의 유지 관리성과 유용성을 향상시킵니다.


9 - 예외를 적절하게 처리하기

Python은 오류를 적절하게 관리하는 데 사용해야 하는 강력한 예외 처리 기능을 제공합니다.

프로그램이 충돌하도록 하는 대신 try 및 Except 블록을 사용하여 잠재적인 오류를 처리하세요.

try:
    with open('data.txt', 'r') as file:
        data = file.read()
except FileNotFoundError:
    print("File not found. Please check the file path.")
except Exception as e:
    print(f"An unexpected error occurred: {e}")

예외를 적절하게 처리하면 프로그램이 충돌 없이 예상치 못한 상황을 처리할 수 있습니다.


10 - 코드를 모듈화하세요

모듈식 코드는 이해, 테스트, 유지 관리가 더 쉽습니다.

코드를 더 작고 재사용 가능한 함수와 클래스로 나누세요.

각 함수나 클래스에는 단일 책임이 있어야 합니다.

# Bad
def process_data(data):
    # Load data
    # Clean data
    # Analyze data
    # Save results

# Good
def load_data(path):
    pass

def clean_data(data):
    pass

def analyze_data(data):
    pass

def save_results(results):
    pass

모듈화로 코드 명확성과 재사용성이 향상되어 디버깅과 확장이 더 쉬워졌습니다.


결론

이러한 Python 모범 사례를 따르면 깔끔하고 효율적이며 유지 관리가 가능한 코드를 작성할 수 있습니다.

작은 스크립트를 작성하든 대규모 애플리케이션을 개발하든 이러한 원칙은 더 훌륭하고 전문적인 Python 코드를 만드는 데 도움이 될 것입니다.

코딩은 단지 작업을 수행하는 것만이 아니라는 점을 기억하세요. 현재와 ​​미래에도 잘 작동하도록 만드는 것입니다.

릴리스 선언문 이 기사는 https://dev.to/devasservice/python-best-practices-writing-clean-efficient-and-maintainable-code-34bj?1에 복제되어 있습니다. 침해가 있는 경우에는 [email protected]으로 문의하시기 바랍니다. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3