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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

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

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

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...

정규 표현식을 사용하여 첫 번째 닫힌 태그와 정지와 일치하는 방법은 무엇입니까? HTML 또는 기타 마크 업 언어를 다룰 때는 정규 표현식이 종종 필요합니다.

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


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

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

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

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

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

뜨거운 주제



