> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 `functools.partial`은 무엇입니까?

Python에서 `functools.partial`은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-02 02:37:11
원래의
533명이 탐색했습니다.

What is `functools.partial` in Python?

Global News One에서 전체 기사 읽기

functools.partial이 무엇인가요?

functools.partial은 기존 함수에 인수를 부분적으로 적용하여 새 함수를 생성합니다. 이는 특정 인수가 반복적이거나 고정된 시나리오에서 함수 호출을 단순화하는 데 도움이 됩니다.

Python의 functools.partial 함수를 사용하면 함수의 인수나 키워드 중 일부를 "고정"하여 더 적은 수의 매개변수로 새 함수를 만들 수 있습니다. 이는 기능의 특정 매개변수를 수정하고 다른 매개변수는 유연하게 유지하려는 경우에 특히 유용합니다.

from functools import partial
로그인 후 복사
로그인 후 복사

기본 구문

partial(func, *args, **kwargs)
로그인 후 복사
로그인 후 복사
  • func : 부분적으로 적용하는 기능
  • *args: 수정할 위치 인수.
  • `kwargs`**: 수정할 키워드 인수입니다.

반환된 객체는 고정 인수가 "동결"된 새로운 함수이며, 새 함수를 호출할 때 나머지 인수만 제공하면 됩니다.


1. 부분적으로 인수 수정

def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100
로그인 후 복사
로그인 후 복사

여기서 부분은 항상 지수=2를 사용하는 새로운 함수 사각형을 생성합니다.


2. 함수 호출 단순화

여러 인수가 있는 함수가 있고 고정된 값을 사용하여 자주 호출한다고 가정해 보겠습니다.

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!
로그인 후 복사
로그인 후 복사

3. 매핑에 사용하기 위한 부분

부분을 사용하여 지도와 같은 작업에 기능을 적용할 수 있습니다.

def multiply(x, y):
    return x * y

# Fix y = 10
multiply_by_10 = partial(multiply, y=10)

# Use in a map
numbers = [1, 2, 3, 4]
result = map(multiply_by_10, numbers)
print(list(result))  # Output: [10, 20, 30, 40]
로그인 후 복사

4. 기본 인수가 있는 함수가 포함된 부분

Partial은 이미 기본 인수가 있는 함수와 원활하게 작동합니다.

def add(a, b=10):
    return a + b

# Fix b to 20
add_with_20 = partial(add, b=20)
print(add_with_20(5))  # Output: 25
로그인 후 복사

5. 다른 라이브러리(예: Pandas 또는 JSON)와 결합

Pandas와 같은 라이브러리에서 부분을 사용하여 반복 작업을 단순화할 수 있습니다.

from functools import partial
로그인 후 복사
로그인 후 복사

functools.partial을 사용해야 하는 경우

  1. 재사용 가능한 논리:
    • 고정 인수를 사용하여 재사용 가능한 버전의 함수를 만들고 싶을 때.
  2. 콜백 단순화:
    • 콜백에 더 간단한 서명이 필요한 경우가 많은 tkinter, asyncio 또는 스레딩과 같은 라이브러리에 유용합니다.
  3. 함수형 프로그래밍:
    • 맵, 필터 또는 유사한 작업과 잘 작동합니다.
  4. 가독성 향상:
    • 중복 인수를 줄여 코드를 더욱 깔끔하게 만듭니다.

참고 사항 및 모범 사례

  • 부분 기능 검사: 부분 함수의 고정된 인수는 부분.func, 부분.args 및 부분.키워드를 사용하여 검사할 수 있습니다.
partial(func, *args, **kwargs)
로그인 후 복사
로그인 후 복사
  • 유연성: 부분 함수를 호출할 때 고정된 인수를 재정의할 수 있습니다.
def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100
로그인 후 복사
로그인 후 복사

고급 예: 고차 함수에 부분 사용

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!
로그인 후 복사
로그인 후 복사

functools.partial을 사용하면 특히 반복적인 함수 호출이나 고차 함수를 처리할 때 코드를 단순화하고 정리할 수 있습니다. 더 많은 예시나 고급 사용 사례를 원하시면 알려주세요!

위 내용은 Python에서 `functools.partial`은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿