>  기사  >  백엔드 개발  >  고급 Python 해킹 ou

고급 Python 해킹 ou

王林
王林원래의
2024-07-24 09:26:41762검색

Advanced Python Hacks ou

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

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


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

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 < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

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 트릭을 사용하세요

Python의 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 여정에서 앞서 나가려면 이러한 개념을 계속 탐색하고 연습하세요.

위 내용은 고급 Python 해킹 ou의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.