본문 바로가기
New 정보/IT정보

파이썬 함수 정의 def 매개변수와 인자 실행 방식

by diane + 2025. 8. 4.
728x90
반응형
SMALL

 

파이썬에서 def 키워드는 함수를 정의할 때 사용됩니다. 함수를 사용하면 특정 기능을 재사용할 수 있고, 코드의 가독성도 향상됩니다. 함수를 정의할 때 **매개변수(parameter)**와 인자(argument) 개념이 등장합니다. 이들의 관계와 함수가 실행되는 방식에 대해 자세히 설명하겠습니다.


1. 함수 정의와 기본 구조

파이썬 함수는 def 키워드로 정의되며, 함수의 이름과 괄호 안에 매개변수를 지정합니다. 함수 정의 후에는 반드시 **return**을 사용하여 값을 반환하거나, 함수 내부에서 특정 작업을 수행합니다.

기본 문법:

def 함수이름(매개변수1, 매개변수2, ...):
    # 함수가 실행할 코드
    return 반환값  # (필요한 경우에만)

예시: 기본 함수 정의

def greet(name):
    print(f"Hello, {name}!")

greet("철수")  # 출력: Hello, 철수!

위의 예시에서, greet 함수는 name이라는 매개변수를 받으며, name을 이용하여 인사 메시지를 출력합니다. greet("철수")에서 "철수"는 인자입니다.


2. 매개변수와 인자의 차이

  • 매개변수 (Parameter): 함수가 정의될 때 괄호 안에 있는 변수들을 매개변수라고 합니다. 이는 함수가 호출될 때 전달될 값을 담을 변수입니다.
  • 인자 (Argument): 함수를 호출할 때 실제로 전달되는 값이 인자입니다. 함수가 호출되면서 전달된 값이 매개변수에 대응됩니다.

예시:

def add(x, y):  # x와 y는 매개변수
    return x + y

result = add(3, 4)  # 3과 4는 인자
print(result)  # 출력: 7

이 예시에서:

  • x와 y는 매개변수
  • 3과 4는 인자입니다.

3. 함수 실행 방식

함수는 정의된 후, 호출되어야 실행됩니다. 함수 호출 시 매개변수에 맞춰 인자가 전달되며, 그에 따라 함수 내부의 코드가 실행됩니다.

함수 실행 과정:

  1. 함수가 정의됩니다.
  2. 함수가 호출될 때, 전달된 인자들이 매개변수에 할당됩니다.
  3. 함수 내부에서 매개변수를 사용하여 계산이나 작업을 수행합니다.
  4. return문을 통해 결과값을 반환하거나, 함수가 종료되면 그 값을 반환하지 않으면 None을 반환합니다.

예시: 함수 실행 과정

def multiply(a, b):
    return a * b

# 함수 호출
result = multiply(5, 3)

# 결과 출력
print(result)  # 출력: 15
  1. multiply 함수가 정의됩니다.
  2. multiply(5, 3)이 호출되면서 a는 5, b는 3으로 할당됩니다.
  3. 함수 내부에서 5 * 3이 계산되어 15가 반환됩니다.
  4. 반환된 값인 15는 변수 result에 저장되고 출력됩니다.

4. 매개변수의 종류

파이썬 함수에서 매개변수는 여러 가지 방식으로 정의할 수 있습니다.

1) 기본 매개변수 (Default Parameters)

기본값을 지정한 매개변수는 함수 호출 시 인자를 생략할 수 있습니다. 이 경우, 생략된 인자에는 기본값이 사용됩니다.

예시: 기본 매개변수

def greet(name="Guest"):
    print(f"Hello, {name}!")

greet()  # 출력: Hello, Guest!
greet("철수")  # 출력: Hello, 철수!

여기서 name은 기본값이 "Guest"로 설정되어 있기 때문에, 인자를 넘기지 않으면 "Guest"가 사용됩니다.

2) 가변 매개변수 (Variable-length Parameters)

파이썬에서는 함수가 가변 인자를 받을 수 있도록 정의할 수 있습니다. 이를 위해 ***args**와 ****kwargs**를 사용합니다.

  • *args: 여러 개의 위치 인자를 받을 때 사용됩니다. 함수 호출 시 여러 개의 값을 튜플 형태로 받습니다.
  • **kwargs: 여러 개의 키워드 인자를 받을 때 사용됩니다. 함수 호출 시 여러 개의 인자를 딕셔너리 형태로 받습니다.

예시: *args 사용

def add_numbers(*args):
    return sum(args)

result = add_numbers(1, 2, 3, 4)
print(result)  # 출력: 10
  • *args는 여러 개의 인자를 받아 튜플로 처리합니다.

예시: **kwargs 사용

def greet(**kwargs):
    print(f"Hello, {kwargs['name']}! Age: {kwargs['age']}")

greet(name="철수", age=25)  # 출력: Hello, 철수! Age: 25
  • **kwargs는 키워드 인자를 받아 딕셔너리로 처리합니다.

3) 키워드 전용 인자 (Keyword-only Arguments)

*를 매개변수 목록에 추가하면 그 뒤에 오는 매개변수는 키워드 전용 인자로, 호출 시 반드시 이름을 명시해야 합니다.

예시: 키워드 전용 인자

def greet(*, name, age):
    print(f"Hello, {name}! Age: {age}")

greet(name="철수", age=25)  # 출력: Hello, 철수! Age: 25
  • name과 age는 키워드 전용 인자로, greet 함수 호출 시 이름을 명시해야만 전달할 수 있습니다.

5. 함수 반환값 (Return)

함수는 return 문을 사용하여 값을 반환할 수 있습니다. 만약 return 문이 없다면, 함수는 **None**을 반환합니다. return 문은 함수를 종료시키고, 함수 호출 위치로 값을 반환합니다.

예시: 반환값 사용

def square(x):
    return x * x

result = square(4)
print(result)  # 출력: 16

return이 없는 경우:

def greet(name):
    print(f"Hello, {name}!")

result = greet("철수")
print(result)  # 출력: None
  • greet 함수는 return 문이 없기 때문에, result에는 None이 할당됩니다.

6. 함수의 실행 흐름

  1. 함수 정의: 함수가 메모리에 저장됩니다. 이 시점에서는 함수가 실행되지 않습니다.
  2. 함수 호출: 함수가 호출될 때, 인자들이 매개변수에 할당됩니다.
  3. 함수 실행: 함수 내부의 코드가 실행됩니다.
  4. 값 반환: return문이 있으면 값이 반환되고, 함수 호출 지점으로 돌아갑니다.

예시: 함수의 실행 흐름

def multiply(a, b):
    return a * b

# 함수 호출
result = multiply(4, 5)  # 인자 4, 5가 매개변수 a, b에 할당됨
print(result)  # 출력: 20
  1. multiply 함수가 정의됩니다.
  2. multiply(4, 5)가 호출되면서, a = 4와 b = 5가 매개변수에 할당됩니다.
  3. a * b가 실행되어 20이 반환됩니다.
  4. result에 20이 할당되고 출력됩니다.

결론

  • 함수는 코드의 재사용을 돕고, 특정 작업을 묶어서 관리할 수 있는 중요한 기능입니다.
  • 매개변수는 함수 정의 시 사용되는 변수이며, 인자는 함수 호출 시 실제로 전달되는 값입니다.
  • 파이썬에서는 다양한 형태의 매개변수를 사용하여 가변 인자, 키워드 인자 등을 처리할 수 있습니다.
  • 함수는 **return**을 사용하여 값을 반환하거나, 값이 없으면 **None**을 반환합니다.
  •  

 

728x90
반응형
LIST

댓글