Python은 단순성과 유연성으로 유명하며, 이는 가변 개수의 인수로 함수를 처리하는 능력에서 비롯되는 경우가 많습니다.
두 개의 특수 기호인 *args와 **kwargs는 이러한 유연성에서 중추적인 역할을 합니다.
이 기사에서는 이러한 기호의 의미, 사용 방법, 그토록 강력한 이유에 대해 알아봅니다.
*args 매개변수를 사용하면 함수가 원하는 수의 위치 인수를 허용할 수 있습니다.
별표(*)는 모든 위치 인수를 튜플로 수집해야 한다는 Python에 대한 신호입니다
.def greet(*args): for name in args: print(f"Hello, {name}!") greet('Alice', 'Bob', 'Charlie')
출력:
Hello, Alice! Hello, Bob! Hello, Charlie!
설명:
*args에 대해 처음 알았을 때 비디오 게임의 새로운 차원을 여는 듯한 느낌이 들었습니다. 함수를 정의하는 것이 훨씬 간단해졌습니다.
마찬가지로 **kwargs를 사용하면 함수가 원하는 수의 키워드 인수를 허용할 수 있습니다.
이중 별표(**)는 Python이 모든 키워드 인수를 사전으로 수집하도록 지시합니다.
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
설명:
유연한 명명된 매개변수 집합이 필요한 함수를 처리할 때 **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를 사용할 때 함수 정의에 배치하는 순서가 중요합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!