Searching...
한국어
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Python Tricks

Python Tricks

A Buffet of Awesome Python Features
by Dan Bader 2017 301 pages
Programming
Computer Science
Coding
듣기

가지 주요 요점

1. 파이썬의 함수는 일급 객체입니다

함수는 객체입니다—변수에 할당되거나 데이터 구조에 저장되며, 다른 함수에 전달되거나 반환될 수 있습니다.

데이터로서의 함수. 파이썬에서는 함수가 일급 시민으로 취급되며, 이는 다른 객체처럼 조작될 수 있음을 의미합니다. 이러한 특성은 강력한 프로그래밍 패러다임을 가능하게 합니다:

  • 함수를 변수에 할당
  • 함수를 리스트, 딕셔너리 또는 다른 데이터 구조에 저장
  • 함수를 다른 함수의 인수로 전달
  • 함수를 다른 함수에서 반환
  • 다른 함수 내부에 함수를 정의 (중첩 함수)

이러한 유연성은 고차 함수, 클로저 및 함수형 프로그래밍 패턴과 같은 고급 프로그래밍 기술을 가능하게 하여 파이썬을 복잡한 문제 해결에 있어 다재다능하고 표현력 있는 언어로 만듭니다.

2. 데코레이터는 함수의 동작을 향상시키고 수정합니다

데코레이터는 호출 가능한 객체의 동작을 영구적으로 수정하지 않고 수정할 수 있는 재사용 가능한 빌딩 블록을 정의합니다.

수정의 문법적 설탕. 데코레이터는 함수나 클래스의 동작을 확장하거나 수정하는 깨끗하고 재사용 가능한 방법을 제공합니다:

  • 함수의 소스 코드를 변경하지 않고 함수의 동작을 수정
  • 일반적인 사용 사례로는 로깅, 타이밍, 접근 제어 및 캐싱이 포함됨
  • 데코레이터는 중첩될 수 있어 단일 함수에 여러 수정을 적용 가능
  • 코드 모듈화를 유지하며 관심사의 분리를 촉진

데코레이터는 @ 문법을 사용하여 구현되며, 이는 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만듭니다. 데코레이터는 파이썬의 일급 함수와 클로저를 활용하여 메타 프로그래밍을 위한 강력한 메커니즘을 제공합니다.

3. *args와 **kwargs는 유연한 함수 인수를 가능하게 합니다

*args와 **kwargs는 파이썬에서 가변 인수를 사용하는 함수를 작성할 수 있게 합니다.

가변 인수의 유연성. 이러한 특수 문법 요소는 함수가 임의의 수의 위치 인수 또는 키워드 인수를 수락할 수 있게 합니다:

  • *args는 추가 위치 인수를 튜플로 수집
  • **kwargs는 추가 키워드 인수를 딕셔너리로 수집
  • 함수 정의의 유연성을 제공하여 향후 확장을 가능하게 함
  • 선택적 매개변수를 가진 래퍼 함수나 API를 작성하는 데 유용

이 기능은 보다 범용적인 함수를 작성할 수 있게 하며, 함수 시그니처를 수정하지 않고도 변경되는 요구 사항에 적응할 수 있는 코드를 작성하는 데 도움이 됩니다.

4. 컴프리헨션은 컬렉션 생성을 위한 간결한 문법을 제공합니다

컴프리헨션은 단순한 for-루프 패턴을 위한 멋진 문법적 설탕입니다.

우아한 컬렉션 생성. 리스트, 세트 및 딕셔너리 컴프리헨션은 기존의 반복 가능한 객체를 기반으로 컬렉션을 생성하는 간결한 방법을 제공합니다:

  • 컬렉션의 생성과 채우기를 한 줄로 결합
  • 동등한 for 루프보다 더 읽기 쉽고 빠름
  • 요소를 필터링하기 위한 조건 포함 가능
  • 리스트, 세트 및 딕셔너리에 사용 가능

예시:

  • 리스트 컴프리헨션: [x*2 for x in range(10) if x % 2 == 0]
  • 세트 컴프리헨션: {word.lower() for word in words}
  • 딕셔너리 컴프리헨션: {k: v**2 for k, v in my_dict.items()}

강력하지만, 지나치게 복잡한 컴프리헨션은 코드의 의도를 흐리게 할 수 있으므로 간결함과 가독성의 균형을 유지하는 것이 중요합니다.

5. 제너레이터 함수와 표현식은 반복자 생성을 단순화합니다

제너레이터는 클래스 기반 반복자를 작성할 때 필요한 많은 보일러플레이트 코드를 추상화합니다.

수월한 반복. 제너레이터는 전체 클래스 구현 없이 반복자를 생성하는 간단한 방법을 제공합니다:

  • yield 키워드를 사용하여 일련의 값을 생성
  • 메모리 효율적이며, 값을 즉시 생성
  • for 루프, 리스트 컴프리헨션 및 기타 반복 가능한 컨텍스트에서 사용 가능
  • 제너레이터 표현식은 간단한 제너레이터를 위한 간결한 문법 제공

제너레이터 함수:

def countdown(n):
    while n > 0:
        yield n
        n -= 1

제너레이터 표현식:

squares = (x*x for x in range(10))

제너레이터는 큰 데이터셋이나 무한 시퀀스를 다룰 때 특히 유용하며, 모든 값을 한 번에 메모리에 저장하지 않습니다.

6. 딕셔너리는 다재다능하고 강력한 데이터 구조입니다

딕셔너리는 파이썬의 중심 데이터 구조입니다.

효율적인 키-값 저장. 딕셔너리는 빠르고 유연하며 기능이 풍부한 연관 배열을 제공합니다:

  • 키 조회, 삽입 및 삭제에 대한 평균 시간 복잡도 O(1)
  • 문자열, 숫자, 튜플과 같은 해시 가능한 객체를 키로 지원
  • 안전한 키 접근을 위한 get() 메서드 제공
  • 다른 언어의 switch/case 문을 에뮬레이트하는 데 사용 가능

고급 딕셔너리 기능:

  • OrderedDict: 삽입된 키의 순서를 기억
  • defaultdict: 누락된 키에 대한 기본값 제공
  • ChainMap: 여러 딕셔너리를 단일 매핑으로 검색

딕셔너리는 파이썬의 구현에 기본적이며, 많은 파이썬 라이브러리와 프레임워크에서 광범위하게 사용됩니다.

7. 효과적인 반복 기술은 코드 가독성을 향상시킵니다

파이썬에서 C 스타일의 루프를 작성하는 것은 비파이썬적입니다.

파이썬식 반복. 파이썬은 시퀀스를 반복하고 반복을 수행하는 여러 관용적인 방법을 제공합니다:

  • 인덱싱 대신 for item in iterable 사용
  • 인덱스와 값을 모두 필요로 할 때 enumerate() 사용
  • 여러 시퀀스를 동시에 반복할 때 zip() 사용
  • 복잡한 반복을 위해 itertools 모듈 활용

예시:

# 대신에:
for i in range(len(items)):
    print(i, items[i])

# 사용:
for i, item in enumerate(items):
    print(i, item)

# 두 리스트를 반복:
for name, age in zip(names, ages):
    print(f"{name} is {age} years old")

이러한 기술은 더 간결하고 읽기 쉽고 효율적인 코드를 작성하게 하며, 파이썬의 명확성과 단순성 철학에 부합합니다.

8. 객체 지향 프로그래밍 개념은 코드 조직을 최적화합니다

추상 기본 클래스(ABCs)는 파생 클래스가 기본 클래스의 특정 메서드를 구현하도록 보장합니다.

구조화된 코드 설계. 파이썬의 객체 지향 기능은 코드를 조직하고 구조화하는 강력한 도구를 제공합니다:

  • 클래스는 데이터와 동작을 캡슐화
  • 상속은 코드 재사용과 특수화를 허용
  • 추상 기본 클래스는 인터페이스를 정의하고 구현을 강제
  • 속성은 속성에 대한 제어된 접근을 제공
  • 특수 메서드(던더 메서드)는 객체 동작의 사용자 정의를 허용

파이썬의 주요 OOP 개념:

  • 덕 타이핑을 통한 다형성
  • 다중 상속 및 메서드 해결 순서(MRO)
  • 상속의 대안으로서의 구성
  • 고급 클래스 생성 제어를 위한 메타클래스

OOP 원칙을 효과적으로 사용하면 더 유지보수 가능하고 확장 가능하며 모듈화된 코드 구조를 만들 수 있습니다.

9. 파이썬의 데이터 구조는 다양한 기능을 제공합니다

병렬 처리 지원을 찾고 있지 않다면, collections.deque가 제공하는 구현은 파이썬에서 FIFO 큐 데이터 구조를 구현하는 데 훌륭한 기본 선택입니다.

맞춤형 데이터 조직. 파이썬은 다양한 요구에 맞는 풍부한 내장 및 표준 라이브러리 데이터 구조를 제공합니다:

  • 리스트: 일반적인 시퀀스를 위한 동적 배열
  • 튜플: 고정된 컬렉션을 위한 불변 시퀀스
  • 세트: 고유한 요소의 무순서 컬렉션
  • 데크: 양쪽 끝에서 효율적인 삽입/삭제를 위한 이중 끝 큐
  • Heapq: 우선순위 큐 구현
  • Counter: 해시 가능한 객체를 세는 멀티셋

올바른 데이터 구조를 선택하면 코드의 성능과 명확성에 큰 영향을 미칠 수 있습니다. 다음과 같은 요소를 고려하십시오:

  • 필요한 작업(예: 빈번한 삽입, 삭제, 조회)
  • 메모리 사용량
  • 스레드 안전 요구 사항
  • 정렬 또는 정렬 필요성

다양한 데이터 구조의 특성과 트레이드오프를 이해하면 프로그래밍 문제에 대한 더 효율적이고 우아한 솔루션을 만들 수 있습니다.

10. 효율적인 문자열 포맷팅은 코드 명확성을 향상시킵니다

포맷 문자열이 사용자 제공인 경우 보안 문제를 피하기 위해 템플릿 문자열을 사용하십시오. 그렇지 않으면 Python 3.6+를 사용하는 경우 리터럴 문자열 보간을 사용하고, 그렇지 않은 경우 "새 스타일" 문자열 포맷팅을 사용하십시오.

명확하고 안전한 문자열 구성. 파이썬은 각기 다른 강점을 가진 여러 문자열 포맷팅 방법을 제공합니다:

  • %-포맷팅: 구식이지만 여전히 널리 사용됨
  • str.format(): 더 읽기 쉽고 유연함
  • f-문자열: 간결하고 강력하며, Python 3.6+에서 사용 가능
  • 템플릿 문자열: 사용자 제공 포맷에 더 안전

f-문자열 예시:

name = "Alice"
age = 30
print(f"{name} is {age} years old")

사용자 입력을 위한 템플릿 문자열:

from string import Template
user_input = Template("Hello, $name!")
print(user_input.substitute(name="Bob"))

적절한 문자열 포맷팅 방법을 선택하면 코드의 가독성, 유지보수성 및 보안이 향상되며, 특히 사용자 제공 데이터나 복잡한 문자열 구성을 다룰 때 유용합니다.

Last updated:

리뷰

4.44 out of 5
Average of 1k+ ratings from Goodreads and Amazon.

Python Tricks는 중급 및 고급 파이썬 주제를 간결하면서도 통찰력 있게 다루는 것으로 높은 평가를 받고 있다. 독자들은 실용적인 팁, 명확한 설명, 그리고 모범 사례에 대한 집중을 높이 평가한다. 많은 이들이 이 책을 통해 지식의 빈틈을 메우고 코딩 실력을 향상시키는 데 도움이 되었다고 말한다. 책의 대화체 톤과 체계적인 구조는 접근성을 높이고 읽는 재미를 더해준다. 일부 경험 많은 개발자들은 도전적이지 않다고 느꼈지만, 대부분은 파이썬 전문 지식을 심화하고 더 관용적인 코드를 작성하려는 사람들에게 훌륭한 자원이라고 동의한다.

저자 소개

댄 베이더는 존경받는 파이썬 전문가이자 교육자입니다. 그는 복잡한 프로그래밍 개념을 명확하고 이해하기 쉽게 설명하는 능력으로 잘 알려져 있습니다. 베이더는 파이썬 튜토리얼과 강좌를 제공하는 인기 있는 온라인 리소스인 Real Python의 창립자입니다. 그는 소프트웨어 개발에 대한 광범위한 경험을 가지고 있으며, 구글과 마이크로소프트와 같은 회사들과 함께 일한 경력이 있습니다. 베이더의 글쓰기 스타일은 친근하고 매력적이라는 평가를 받아, 기술적인 내용을 학습자들이 더 쉽게 접근할 수 있도록 합니다. 그의 작업은 개발자들이 파이썬 기술을 향상시키고 코딩에서 모범 사례를 채택하도록 돕는 데 중점을 두고 있습니다.

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 29,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to full summaries
Free users can listen to the first takeaway only
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
15,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.