본문 바로가기
프로그래밍 언어(Programming Languages)/파이썬(Python)

[파이썬 Python] 10가지 방법으로 더 나은 🐍 파이썬 코드를 작성하기

by 데이터 벌집 2024. 10. 30.
반응형

파이썬은 배우기 쉽고, 강력하며 다양한 용도로 활용할 수 있는 프로그래밍 언어로, 데이터 과학 📊, 웹 개발 🌐, 자동화 🤖 등 여러 분야에서 폭넓게 사용되고 있습니다. 이 글에서는 더 나은 파이썬 코드를 작성하는 데 도움이 될 🔟가지 팁을 소개합니다.

 

[파이썬 Python] 10가지 방법으로 더 나은 🐍 파이썬 코드를 작성하기

 

1. "이터레이터" 사용하여 메모리 💾 절약하기

대용량 데이터 📂 처리 시, 모든 데이터를 한 번에 메모리에 적재하기 어렵다면 이터레이터를 사용해 데이터를 하나씩 처리할 수 있습니다. 이를 통해 메모리 효율성을 높이고 대용량 데이터를 효율적으로 처리할 수 있습니다.

# 대용량 숫자 리스트를 하나씩 처리하는 이터레이터 함수
def process_large_data(data):
    for item in data:
        yield item

large_data = range(1, 1000000)
for item in process_large_data(large_data):
    if item % 100000 == 0:
        print(f"📊 현재 처리 중인 데이터: {item}")

2. "get()"를 사용하여 기본값 처리하기

딕셔너리 📑에서 키가 존재하지 않는 경우 기본값을 설정하고 싶다면 "get()"을 사용하면 코드를 간결하게 작성할 수 있습니다.

inventory = {"👖": 500, "👚": 600}
products_to_add = ["👗", "👕", "🧥"]

for product in products_to_add:
    stock = inventory.get(product, 500)
    inventory[product] = stock

print("최종 재고 🏪:", inventory)

3. "람다 함수 🔄 매핑"을 사용하여 "if-elif" 대체하기

여러 함수 호출을 사용자의 입력에 따라 결정해야 할 때, "if-elif" 대신 람다 함수를 딕셔너리에 매핑하여 코드를 간결하게 작성할 수 있습니다.

funcs_dict = {
    1: lambda: print("📞 첫 번째 함수 호출 중..."),
    2: lambda: print("📞 두 번째 함수 호출 중..."),
}

options = int(input("옵션을 입력하세요: "))
funcs_dict.get(options, lambda: print("📞 기본 함수 호출 중..."))()

4. "Counter"를 사용하여 빈도 계산하기

텍스트 데이터에서 단어의 빈도를 계산할 때 "Counter"를 사용하면 간단하게 빈도 계산을 할 수 있습니다.

from collections import Counter
import re

with open("📄 sample_text.txt", "r") as file:
    text = file.read()

words = re.findall(r'\w+', text.lower())
word_counts = Counter(words)

most_common_word, count = word_counts.most_common(1)[0]
print(f"가장 많이 나온 단어 🏆: {most_common_word} ({count}회)")

5. "캐싱"을 통한 코드 최적화 🚀

재귀 함수의 반복 호출을 최적화하기 위해 "캐싱" 기법을 사용하면 동일한 입력값에 대해 불필요한 계산을 줄일 수 있습니다. 대표적인 예는 피보나치 수열입니다.

from functools import cache

@cache
def fibonacci(num):
    if num < 2:
        return num
    return fibonacci(num - 1) + fibonacci(num - 2)

result = fibonacci(48)
print(f"결과 🧮: {result}")

6. "데코레이터" 사용하여 로그 추가하기 📝

여러 함수의 실행 로그를 기록해야 할 때, 각각의 함수에 로그를 추가하는 대신 데코레이터를 사용해 간단하게 처리할 수 있습니다.

def log_function_call(func):
    def wrapper(*args, **kwargs):
        print(f"{func.__name__}() 함수가 호출되었습니다.")
        return func(*args, **kwargs)
    return wrapper

@log_function_call
def greet(name):
    print(f"안녕하세요, {name}님! 👋")

greet("철수")

7. "데이터 클래스"로 깔끔한 데이터 구조 만들기 🧹

데이터를 담기 위한 클래스를 만들 때, 파이썬의 "데이터 클래스(dataclass)"를 사용하면 초기화 메서드를 작성하는 번거로움을 줄이고, 가독성과 유지보수를 향상시킬 수 있습니다.

from dataclasses import dataclass

@dataclass
class Product:
    name: str
    price: float
    stock: int

product = Product(name='💻 Laptop', price=1500.0, stock=10)
print(product)

8. "match"를 사용한 상태 처리 🔄

파이썬 3.10부터 추가된 "match" 문을 사용하면 상태나 조건을 간단하고 직관적으로 처리할 수 있습니다.

def get_status_code_message(status_code):
    match status_code:
        case 200:
            return "성공 ✅"
        case 400:
            return "잘못된 요청 ❌"
        case 404:
            return "찾을 수 없음 🔍"
        case _:
            return "알 수 없는 상태 코드 ❓"

print(get_status_code_message(404))

9. "all"과 "any" 연산자 사용하기 🔎

"all"과 "any" 연산자를 사용하면 조건 검사를 간단하게 작성할 수 있습니다.

form_data = {"name": "Nikita", "email": "nikita@gmail.com", "phone": "📞 1234567890"}
required_fields = ["name", "email", "phone"]

if all(form_data.get(field) for field in required_fields):
    print("모든 필수 항목이 입력되었습니다. ✅")
else:
    print("필수 항목이 누락되었습니다. ❌")

🔟. "컴프리헨션"을 사용한 간결한 코드 작성 ✨

리스트, 딕셔너리, 세트 등을 처리할 때 컴프리헨션을 사용해 코드를 간결하게 작성할 수 있습니다.

students = ["Alice", "Bob", "Charlie", "David"]
student_scores = {student: len(student) * 10 for student in students}
print(student_scores)  # {'Alice': 50, 'Bob': 30, 'Charlie': 70, 'David': 50}

 

 

더 나은 코드를 작성하는 것은 다른 사람들과 협업하고, 코드의 가독성을 높이는 데 매우 중요합니다. 이 🔟가지 팁을 활용해 더욱 효율적이고 생산적인 🐍 코딩을 해보세요.

반응형