파이썬(Python)

[ 기본 ] 파이썬(Python) 매개변수와 인자의 활용

카루루1007 2024. 9. 24. 10:58
728x90
반응형

매개변수와 인자의 차이 : 매개변수(Parameter)와 인자(Argument)

 

 기본적인 매개변수와 인자

 

가장 기본적인 사용방법입니다.

def add(a, b):
    print(f"a = {a}, b = {b}")

add(3, 5)

 

add(a, b) 함수를 호출하면 

매개변수 a와 b에 각각 3과 5가 전달되고

실행결과는 

a = 3, b = 5가 됩니다.

 

위와 같은 코드의 경우 인자를 전달할 때 인자의 전달 순서가 큰 의미는 없지만,

아래와 같은 코드를 살펴보면 인자의 전달 순서가 중요함을 알 수 있습니다.

 

def print_user_info(name, age):
    print(f"이름: {name}, 나이: {age}")

print_user_info("홍길동", 30)

위 코드의 결과는 아래와 같습니다.

이름 : 홍길동, 나이 : 30

 

만약 위 코드에서 print_user_info 함수 호출 시 인자를 아래와 같이 사용하면

전혀 엉뚱한 결과가 나타납니다.

def print_user_info(name, age):
    print(f"이름: {name}, 나이: {age}")

print_user_info(30, "홍길동")

이 코드를 실행하면 아래와 같은 결과가 나타납니다.

이름 : 30, 나이 : 홍길동

 

이렇게 인자를 전달할 때 인자의 순서를 정확히 맞추어야 한다는 단점이 있습니다.

순서를 맞추지 않아 에러가 발생한다면 에러를 처리하면 되지만,

에러가 발생하지 않고 프로그램이 실행된다면 의도치 않은 결과가 나타날 수 있습니다.

 

반응형

 키워드 인자

 

인자의 전달 순서에 구애받지 않고, 매개변수의 이름과 함께 값을 전달하는 방식입니다.

함수를 호출할 때 매개변수의 이름과 함께 값을 전달하면,

순서에 상관없이 해당 매개변수에 값이 정확히 전달이 됩니다.

def print_user_info(name, age):
    print(f"이름: {name}, 나이: {age}")

print_user_info(age=30, name = "홍길동")

 

위 코드는 의도한 대로 아래와 같이 결과가 나타납니다.

이름 : 홍길동, 나이 : 30

 

 

 기본값 매개변수

 

기본값 매개변수함수를 정의할 때 매개변수에 미리 기본값을 설정해 두는 것을 말합니다.

함수 호출시에 해당 매개변수에 값을 전달하지 않으면, 기본값이 사용됩니다.

def print_user_info(name, age=30):
    print(f"이름: {name}, 나이: {age}")

print_user_info("홍길동")

 

위 코드는 함수를 호출할 때 age 인자를 전달하지 않음에도

아래와 같이 결과가 나타납니다.

이름 : 홍길동, 나이 : 30

 

함수를 정의할 때 이미 age 매개변수의 기본값이 30으로 설정되어 있기 때문입니다.

 

age에 값을 전달하면 전달한 값으로 변경이 됩니다.

def print_user_info(name, age=30):
    print(f"이름: {name}, 나이: {age}")

print_user_info("홍길동", 40)

위 코드의 결과는 다음과 같습니다.

이름 : 홍길동, 나이 : 40

 

age 매개변수의 기본값이 30이더라도,

함수 호출 시에 age 매개변수에 값을 전달하면

기본값은 무시되고 전달된 값을 age 매개변수의 값으로 사용합니다.

 

 가변길이 매개변수 : *arg

 

함수에 전달되는 인자의 개수가 정해지지 않을 때 사용하는 매개변수를 가변길이 매개변수라고 합니다.

즉, 함수가 호출될 때 지정된 인자가 정해져 있지 않거나 여러 개의 인자가 전달되었을 경우 

유용하게 사용됩니다.

 

*arg 는 입력받은 모든 인자들을 튜플 형태로 담습니다.

※ 튜플에 대한 설명 : 파이썬 튜플(Python Tuple)

 

예시코드

def calculate_sum(*args):
    total = 0
    for num in args:
        total += num
    return total

result = calculate_sum(1, 2, 3, 4, 5)
print(result)

 

 가변길이 매개변수 : **kwargs

 

*arg와 비슷하지만

**kwargs는 함수키-값 쌍으로 된 인자들을 받기 위한 매개변수입니다.

 

**kwargs 는 입력받은 모든 키-값 쌍들을 딕셔너리 형태로 저장합니다.

※ 딕셔너리에 대한 설명 : 파이썬 Dictionary

 

예시코드

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")


print_info(name="John", age=30, city="New York")

 

 

728x90

 다양한 함수 호출방식 예시

 

 

def my_function(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

my_function(1)

(결과)

a: 1
b: 2
args: ()
kwargs: {}

 

def my_function(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

my_function(1, 3, 4, 5, name="홍길동", age=30) 

(결과)
a: 1
b: 3
args: (4, 5)
kwargs: {'name': '홍길동', 'age': 30}

 

def my_function(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

my_function(1, 3, 4, 5, '홍길동', age=30)

(결과)
a: 1
b: 3
args: (4, 5, '홍길동')
kwargs: {'age': 30}

 

def my_function(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)
    
my_function(a=1, b=3, x=4, y=5)

(결과)
a: 1
b: 3
args: ()
kwargs: {'x': 4, 'y': 5}

 

def my_function(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

my_function(1, name='홍길동', age=30, city='서울')

(결과)
a: 1
b: 2
args: ()
kwargs: {'name': '홍길동', 'age': 30, 'city': '서울'}

 

def my_function(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

my_list = [11, 12, 13]
my_function(*my_list)

(결과)
a: 11
b: 12
args: (13,)
kwargs: {}

 

def my_function(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

my_list = [11, 12, 13]
my_function(my_list)

(결과)
a: [11, 12, 13]
b: 2
args: ()
kwargs: {}

 

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

728x90
반응형