"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 고급 Python 해킹 ou

고급 Python 해킹 ou

2024-07-30에 게시됨
검색:681

Advanced Python Hacks ou

Python은 다재다능하고 강력한 언어이며, 고급 기능을 익히면 코딩 효율성과 가독성을 크게 향상시킬 수 있습니다. 다음은 더 좋고, 더 깨끗하고, 더 효율적인 코드를 작성하는 데 도움이 되는 몇 가지 고급 Python 팁입니다.

저는 주말에 읽을 수 있는 Python을 다루는 작은 책 2권을 썼습니다. 링크는 다음과 같습니다: (1) https://leanpub.com/learnpython_inweekend_pt1 & (2) https://leanpub.com/learnpython_inweekend_pt2


1. 간결한 코드를 위해 List Comprehension을 사용하세요

목록 이해는 목록을 만드는 간결한 방법을 제공합니다. 이는 종종 전통적인 for-loop 및 조건문을 대체하여 더 깔끔하고 읽기 쉬운 코드를 생성할 수 있습니다.

# Traditional approach
numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for num in numbers:
    squared_numbers.append(num ** 2)

# Using list comprehension
squared_numbers = [num ** 2 for num in numbers]

2. 메모리 효율성을 위해 생성기 표현식 활용

생성기 표현식을 사용하면 전체 시퀀스를 메모리에 저장하지 않고도 간결한 방식으로 반복자를 생성할 수 있으므로 메모리 효율성이 높아집니다.

# List comprehension (creates a list)
squared_numbers = [num ** 2 for num in numbers]

# Generator expression (creates an iterator)
squared_numbers = (num ** 2 for num in numbers)

3. 인덱스 추적을 위해 enumerate()를 활용하세요

반복 가능한 항목을 반복하고 각 요소의 인덱스를 추적해야 하는 경우 enumerate() 함수는 매우 유용합니다.

fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
    print(f"Index: {index}, Fruit: {fruit}")

4. Join()을 사용하여 문자열 연결 단순화

join() 메서드를 사용하여 문자열을 연결하는 것이 연산자를 사용하는 것보다 더 효율적이며, 특히 큰 문자열의 경우 더욱 효율적입니다.

fruits = ['apple', 'banana', 'cherry']
fruit_string = ', '.join(fruits)
print(fruit_string)  # Output: apple, banana, cherry

5. __slots__을 사용하여 메모리 사용량 줄이기

기본적으로 Python은 인스턴스 속성을 사전에 저장하므로 상당한 메모리를 소비할 수 있습니다. __slots__을 사용하면 고정된 인스턴스 변수 세트에 메모리를 할당하여 메모리 사용량을 줄일 수 있습니다.

class Point:
    __slots__ = ['x', 'y']
    def __init__(self, x, y):
        self.x = x
        self.y = y

6. 예외를 무시하려면 contextlib.suppress를 사용하세요.

contextlib.suppress 컨텍스트 관리자를 사용하면 특정 예외를 무시하고 불필요한 try-Exception 블록을 피하여 코드를 단순화할 수 있습니다.

from contextlib import suppress

with suppress(FileNotFoundError):
    with open('file.txt', 'r') as file:
        contents = file.read()

7. itertools 모듈 활용

itertools 모듈은 반복자 작업을 위한 효율적인 함수 모음을 제공합니다. 곱, 순열, 조합과 같은 기능을 사용하면 복잡한 작업을 단순화할 수 있습니다.

import itertools

# Calculate all products of an input
print(list(itertools.product('abc', repeat=2)))

# Calculate all permutations
print(list(itertools.permutations('abc')))

8. 캐싱을 위해 functools.lru_cache를 사용하세요

functools.lru_cache 데코레이터는 비용이 많이 드는 함수 호출의 결과를 캐시하여 성능을 향상시킬 수 있습니다.

from functools import lru_cache

@lru_cache(maxsize=32)
def fibonacci(n):
    if n 



9. 클리너 코드를 위한 마스터 데코레이터

데코레이터는 함수나 클래스의 동작을 수정하기 위한 강력한 도구입니다. 로깅, 액세스 제어 등에 사용할 수 있습니다.

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

10. For-Else 트릭을 사용하세요

파이썬의 for-else 구문을 사용하면 for 루프가 정상적으로 완료된 후(즉, break 문을 만나지 않고) else 블록을 실행할 수 있습니다. 이는 검색 작업에 특히 유용할 수 있습니다.

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(f"{n} equals {x} * {n//x}")
            break
    else:
        # Loop fell through without finding a factor
        print(f"{n} is a prime number")

결론

이러한 고급 Python 팁을 개발 워크플로우에 통합하면 보다 효율적이고 읽기 쉽고 유지 관리가 쉬운 코드를 작성할 수 있습니다.

__slots__로 메모리 사용을 최적화하든, Join()으로 문자열 작업을 단순화하든, itertools 모듈의 기능을 활용하든 이러한 기술은 Python 프로그래밍 기술을 크게 향상시킬 수 있습니다.

Python 여정에서 앞서 나가려면 이러한 개념을 계속 탐색하고 연습하세요.

릴리스 선언문 이 글은 https://dev.to/hisham_elamir/10-advanced-python-hacks-4-you-j2o?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3