Python은 다재다능하고 강력한 언어이며, Python의 고급 기능을 익히면 코딩 효율성과 가독성이 크게 향상됩니다. 다음은 더 좋고, 더 깨끗하고, 더 효율적인 코드를 작성하는 데 도움이 되는 몇 가지 고급 Python 팁입니다.
주말에 읽기 위해 Python을 다루는 작은 책 2권을 썼습니다. 링크는 다음과 같습니다: (1) https://leanpub.com/learnpython_inweekend_pt1 & (2) https://leanpub.com/learnpython_inweekend_pt2
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]
생성기 표현식을 사용하면 전체 시퀀스를 메모리에 저장하지 않고도 간결한 방식으로 반복자를 생성할 수 있으므로 메모리 효율성이 높아집니다.
# 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)
반복 가능한 항목을 반복하고 각 요소의 인덱스를 추적해야 하는 경우 enumerate() 함수는 매우 유용합니다.
fruits = ['apple', 'banana', 'cherry'] for index, fruit in enumerate(fruits): print(f"Index: {index}, Fruit: {fruit}")
join() 메서드를 사용하여 문자열을 연결하는 것이 + 연산자를 사용하는 것보다 더 효율적이며, 특히 큰 문자열의 경우 더욱 효율적입니다.
fruits = ['apple', 'banana', 'cherry'] fruit_string = ', '.join(fruits) print(fruit_string) # Output: apple, banana, cherry
기본적으로 Python은 인스턴스 속성을 사전에 저장하므로 상당한 메모리를 소비할 수 있습니다. __slots__을 사용하면 고정된 인스턴스 변수 세트에 메모리를 할당하여 메모리 사용량을 줄일 수 있습니다.
class Point: __slots__ = ['x', 'y'] def __init__(self, x, y): self.x = x self.y = y
contextlib.suppress 컨텍스트 관리자를 사용하면 특정 예외를 무시하고 불필요한 try-Exception 블록을 피하여 코드를 단순화할 수 있습니다.
from contextlib import suppress with suppress(FileNotFoundError): with open('file.txt', 'r') as file: contents = file.read()
itertools 모듈은 반복자 작업을 위한 효율적인 함수 모음을 제공합니다. 곱, 순열, 조합과 같은 기능을 사용하면 복잡한 작업을 단순화할 수 있습니다.
import itertools # Calculate all products of an input print(list(itertools.product('abc', repeat=2))) # Calculate all permutations print(list(itertools.permutations('abc')))
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)
데코레이터는 함수나 클래스의 동작을 수정하는 강력한 도구입니다. 로깅, 액세스 제어 등에 사용할 수 있습니다.
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()
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!