Python *args 및 **kwargs 이해
Python은 단순성과 유연성으로 유명하며, 이는 가변 개수의 인수로 함수를 처리하는 능력에서 비롯되는 경우가 많습니다.
두 개의 특수 기호인 *args와 **kwargs는 이러한 유연성에서 중추적인 역할을 합니다.
이 기사에서는 이러한 기호의 의미, 사용 방법, 그토록 강력한 이유에 대해 알아봅니다.
*args의 기본
*args 매개변수를 사용하면 함수가 원하는 수의 위치 인수를 허용할 수 있습니다.
별표(*)는 모든 위치 인수를 튜플로 수집해야 한다는 Python에 대한 신호입니다
.*args 실행 예
def greet(*args): for name in args: print(f"Hello, {name}!") greet('Alice', 'Bob', 'Charlie')
출력:
Hello, Alice! Hello, Bob! Hello, Charlie!
설명:
- greet 함수는 위치 인수를 원하는 수만큼 허용합니다.
- 함수 내에서 args는 전달된 모든 인수를 포함하는 튜플입니다.
- 각 이름에 대한 인사말을 인쇄하기 위해 args를 반복합니다.
*args에 대해 처음 알았을 때 비디오 게임의 새로운 차원을 여는 듯한 느낌이 들었습니다. 함수를 정의하는 것이 훨씬 간단해졌습니다.
**kwargs에 뛰어들기
마찬가지로 **kwargs를 사용하면 함수가 원하는 수의 키워드 인수를 허용할 수 있습니다.
이중 별표(**)는 Python이 모든 키워드 인수를 사전으로 수집하도록 지시합니다.
**kwargs 실행 예
def display_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") display_info(name='Alice', age=30, city='New York')
출력:
name: Alice age: 30 city: New York
설명:
- display_info 함수는 여러 개의 키워드 인수를 허용합니다.
- 함수 내부에서 kwargs는 모든 키워드 인수를 포함하는 사전입니다.
- kwargs.items()를 반복하여 각 키-값 쌍을 인쇄합니다.
유연한 명명된 매개변수 집합이 필요한 함수를 처리할 때 **kwargs를 사용하면 생명을 구할 수 있습니다. 코드를 깔끔하고 체계적으로 유지해줍니다.
*args와 **kwargs 결합
동일한 함수에서 *args와 **kwargs를 모두 사용하여 모든 유형의 인수를 허용할 수 있습니다.
복합사용 예시
def make_sentence(*args, **kwargs): sentence = ' '.join(args) for key, value in kwargs.items(): sentence += f" {key} {value}" print(sentence) make_sentence('I', 'love', 'Python', exclamation='!', emoji='?')
출력:
I love Python exclamation ! emoji ?
설명:
- args는 위치 인수를 튜플로 수집합니다.
- *kwargs는 키워드 인수를 사전으로 수집합니다.
- 위치 인수를 결합하고 키워드 인수를 추가하여 문장을 구성합니다.
*args와 **kwargs를 혼합하면 올바른 재료를 모두 사용하여 요리하는 것과 같은 느낌이 듭니다. 요리를 망칠 필요 없이 원하는 대로 레시피를 조정할 수 있습니다.
매개변수의 순서
*args 및 **kwargs를 사용할 때 함수 정의에 배치하는 순서가 중요합니다.
- 정규 위치 인수
- 인수
- 키워드 인수(기본값이 없는 인수)
- 기본값이 있는 키워드 인수
- *크워그
올바른 주문 예
def greet(*args): for name in args: print(f"Hello, {name}!") greet('Alice', 'Bob', 'Charlie')
잘못된 주문 예시
Hello, Alice! Hello, Bob! Hello, Charlie!
저는 이 주문에 대해 인정하고 싶은 것보다 더 많은 실수를 했습니다. 매개변수 순서를 다시 확인하면 디버깅 시간이 많이 절약됩니다!
* 및 **를 사용하여 인수 압축 풀기
별표는 함수 정의뿐만 아니라 함수 호출 시에도 유용합니다.
시퀀스와 사전을 인수로 풀 수 있습니다.
포장 풀기의 예
def display_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") display_info(name='Alice', age=30, city='New York')
출력:
name: Alice age: 30 city: New York
설명:
- 숫자는 튜플을 위치 인수로 압축 해제합니다.
- *세부사항은 사전을 키워드 인수로 압축을 풉니다.
이 기능을 사용하면 특히 목록이나 사전에 자연스럽게 포함되는 데이터를 처리할 때 코드가 훨씬 깔끔해졌습니다.
실제 용도
유연한 기능 인터페이스
함수 시그니처를 변경하지 않고 다양한 수의 입력을 처리하는 함수를 원하는 경우.
def make_sentence(*args, **kwargs): sentence = ' '.join(args) for key, value in kwargs.items(): sentence += f" {key} {value}" print(sentence) make_sentence('I', 'love', 'Python', exclamation='!', emoji='?')
데코레이터 및 래퍼
데코레이터를 작성할 때 래핑된 함수가 수신할 인수 수를 모르는 경우가 많습니다.
I love Python exclamation ! emoji ?
데코레이터는 제가 Python에서 가장 좋아하는 기능 중 하나이며 *args와 **kwargs를 사용하면 가능합니다.
피해야 할 일반적인 실수
매개변수 위치가 잘못됨: *args 및 **kwargs가 함수 서명에 올바르게 배치되었는지 확인하세요.
과도한 사용: *args 및 **kwargs는 강력하지만 과도하게 사용하면 코드를 이해하기 어려울 수 있습니다.
별표 잊어버리기: args와 kwargs는 단지 관례일 뿐이라는 점을 기억하세요. 별표(*, **)가 이 제품을 특별하게 만들어줍니다.
def func(a, b, *args, **kwargs): pass
균형이 중요합니다. 어디에서나 *args 및 **kwargs를 사용하고 싶은 유혹이 있지만 때로는 명시적인 매개변수가 더 명확할 때도 있습니다.
결론
*args와 **kwargs를 이해하면 Python 프로그래밍에 무한한 가능성이 열립니다.
임의의 인수를 처리할 수 있는 함수를 작성할 수 있는 유연성을 제공하여 코드를 더욱 동적이고 적응 가능하게 만듭니다.
*args와 **kwargs를 마스터한 것이 내 Python 여정의 전환점이 되었습니다.
코딩이 더욱 즐거워지고 프로그램이 더욱 강력해졌습니다. 아직 이러한 기능을 살펴보지 않았다면 직접 살펴보는 것이 좋습니다!
위 내용은 Python *args 및 **kwargs 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Linux 터미널에서 Python 사용 ...

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Pythonasyncio에 대해 ...

Investing.com의 크롤링 전략 이해 많은 사람들이 종종 Investing.com (https://cn.investing.com/news/latest-news)에서 뉴스 데이터를 크롤링하려고합니다.

Python 3.6에 피클 파일 로딩 3.6 환경 오류 : ModulenotFounderRor : nomodulename ...

SCAPY 크롤러를 사용할 때 파이프 라인 파일을 작성할 수없는 이유에 대한 논의 지속적인 데이터 저장을 위해 SCAPY 크롤러를 사용할 때 파이프 라인 파일이 발생할 수 있습니다 ...
