함수 인자 전달 이해하기
Python 에서 함수는 특정 작업을 수행하기 위해 일련의 문을 함께 그룹화할 수 있게 해주는 기본적인 개념입니다. 함수를 호출할 때, 종종 인자라고 부르는 일부 데이터를 제공해야 합니다. Python 은 이러한 인자를 함수에 전달하는 다양한 방법을 제공합니다. 이러한 유연성은 더 깔끔하고 유지 관리하기 쉬운 코드를 작성하는 데 도움이 되므로 매우 유용합니다. 이러한 기술을 프로젝트에 적용하기 전에, 이러한 인자 전달 규칙을 자세히 살펴보겠습니다.
작업 백업 생성하기
stock.py 파일을 변경하기 전에 백업을 생성하는 것이 좋습니다. 이렇게 하면 실험 중에 문제가 발생하더라도 항상 원래 버전으로 돌아갈 수 있습니다. 백업을 생성하려면 터미널을 열고 다음 명령을 실행하십시오.
cp stock.py orig_stock.py
이 명령은 터미널에서 cp (복사) 명령을 사용합니다. stock.py 파일을 가져와 orig_stock.py라는 사본을 만듭니다. 이렇게 하면 원래 작업이 안전하게 보존됩니다.
함수 인자 전달 탐색하기
Python 에는 다양한 유형의 인자를 사용하여 함수를 호출하는 여러 가지 방법이 있습니다. 각 방법을 자세히 살펴보겠습니다.
1. 위치 인자 (Positional Arguments)
함수에 인자를 전달하는 가장 간단한 방법은 위치를 사용하는 것입니다. 함수를 정의할 때 매개변수 목록을 지정합니다. 함수를 호출할 때, 정의된 순서와 동일한 순서로 이러한 매개변수에 대한 값을 제공합니다.
다음은 예시입니다.
def calculate(x, y, z):
return x + y + z
## 위치 인자로 호출
result = calculate(1, 2, 3)
print(result) ## 출력: 6
이 예제에서 calculate 함수는 세 개의 매개변수 x, y, z를 받습니다. calculate(1, 2, 3)으로 함수를 호출하면 값 1이 x에 할당되고, 2가 y에 할당되고, 3이 z에 할당됩니다. 그런 다음 함수는 이러한 값을 더하여 결과를 반환합니다.
2. 키워드 인자 (Keyword Arguments)
위치 인자 외에도 이름으로 인자를 지정할 수도 있습니다. 이것을 키워드 인자를 사용한다고 합니다. 키워드 인자를 사용하면 인자의 순서에 대해 걱정할 필요가 없습니다.
다음은 예시입니다.
## 위치 인자와 키워드 인자를 혼합하여 호출
result = calculate(1, z=3, y=2)
print(result) ## 출력: 6
이 예제에서는 먼저 x에 대한 위치 인자 1을 전달합니다. 그런 다음 키워드 인자를 사용하여 y와 z의 값을 지정합니다. 키워드 인자의 순서는 올바른 이름을 제공하는 한 중요하지 않습니다.
3. 시퀀스 및 딕셔너리 언패킹 (Unpacking Sequences and Dictionaries)
Python 은 * 및 ** 구문을 사용하여 시퀀스 및 딕셔너리를 인자로 전달하는 편리한 방법을 제공합니다. 이것을 언패킹이라고 합니다.
튜플을 위치 인자로 언패킹하는 예는 다음과 같습니다.
## 튜플을 위치 인자로 언패킹
args = (1, 2, 3)
result = calculate(*args)
print(result) ## 출력: 6
이 예제에서는 값 1, 2, 3을 포함하는 튜플 args가 있습니다. 함수 호출에서 args 앞에 * 연산자를 사용하면 Python 은 튜플을 언패킹하고 해당 요소를 calculate 함수에 위치 인자로 전달합니다.
딕셔너리를 키워드 인자로 언패킹하는 예는 다음과 같습니다.
## 딕셔너리를 키워드 인자로 언패킹
kwargs = {'y': 2, 'z': 3}
result = calculate(1, **kwargs)
print(result) ## 출력: 6
이 예제에서는 키 - 값 쌍 'y': 2 및 'z': 3을 포함하는 딕셔너리 kwargs가 있습니다. 함수 호출에서 kwargs 앞에 ** 연산자를 사용하면 Python 은 딕셔너리를 언패킹하고 해당 키 - 값 쌍을 calculate 함수에 키워드 인자로 전달합니다.
4. 가변 인자 (Variable Arguments) 수락
때로는 임의의 수의 인자를 수락할 수 있는 함수를 정의하고 싶을 수 있습니다. Python 을 사용하면 함수 정의에서 * 및 ** 구문을 사용하여 이 작업을 수행할 수 있습니다.
임의의 수의 위치 인자를 수락하는 함수의 예는 다음과 같습니다.
## 임의의 수의 위치 인자 수락
def sum_all(*args):
return sum(args)
print(sum_all(1, 2)) ## 출력: 3
print(sum_all(1, 2, 3, 4, 5)) ## 출력: 15
이 예제에서 sum_all 함수는 *args 매개변수를 사용하여 임의의 수의 위치 인자를 수락합니다. * 연산자는 모든 위치 인자를 args라는 튜플로 수집합니다. 그런 다음 함수는 내장 sum 함수를 사용하여 튜플의 모든 요소를 더합니다.
임의의 수의 키워드 인자를 수락하는 함수의 예는 다음과 같습니다.
## 임의의 수의 키워드 인자 수락
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Python", year=1991)
## 출력:
## name: Python
## year: 1991
이 예제에서 print_info 함수는 **kwargs 매개변수를 사용하여 임의의 수의 키워드 인자를 수락합니다. ** 연산자는 모든 키워드 인자를 kwargs라는 딕셔너리로 수집합니다. 그런 다음 함수는 딕셔너리의 키 - 값 쌍을 반복하고 이를 출력합니다.
이러한 기술은 다음 단계에서 더 유연하고 재사용 가능한 코드 구조를 만드는 데 도움이 됩니다. 이러한 개념에 더 익숙해지려면 Python 인터프리터를 열고 이러한 예제를 시도해 보겠습니다.
python3
Python 인터프리터에 들어가면 위의 예제를 입력해 보십시오. 이렇게 하면 이러한 인자 전달 기술에 대한 실질적인 경험을 얻을 수 있습니다.