728x90

020. 매개변수(parameter) 종류와 순서 

 

 

예를 보자

def personal_info(**kwargs):  # info 뒤 ( ) 안이 매개변수
    for key, value in kwargs.items():
        print(key, ': ', value, sep = '')

y = {'name': '홍길동', 'age': 30, 'address': '서울시 용산구 이촌동'}
personal_info(**y)

결과값
name: 홍길동
age: 30
address: 서울시 용산구 이촌동

*설명

맨 아랫줄 인수 personal_info(**y)에 바로 윗줄 y변수의 정보가 들어가고 **이게 붙어서

키워드 매개변수로써 첫째줄의 def의 매개변수 자리에 들어가서 함수 def personal_info가 작동한다

 

  • def : 함수를 만들 때 사용하는 예약어
  • 매개변수(parameter) : 함수에 입력으로 전달된 값을 받는 변수
                  함수 이름 뒤 괄호 안의 것
  • 인수(arguements) : 함수를 호출할 때 전달하는 입력값

 

 

사용법

함수를 정의하고 거기에 함수 밖에서 보내올 데이터(변수)를 받을 매개변수 타입을 지정하고, 작성한 함수에 밖에서 변수(인수)를 지정하면 작동된다.

 

종류

세가지는 혼용가능

  1. 고정 매개변수(parameter) : args = 1 or True
  2. 가변 매개변수(parameter) : *args
  3. 키워드 매개변수(parameter) : **kwargs

 

 

1)고정 매개변수(parameter)

매개변수 값을 지정하여 변동이 없게하는 매개변수

여러개 써도 순서는 상관x

ex) a=1, man=True

 

아래에서 a=3,b=7이 매개변수를 지정한 것으로 고정매개변수

def add(a, b):
    return a+b

result = add(a=3, b=7)  # a에 3, b에 7을 전달
print(result)

결과값
10

숫자 뿐 아니라, True나 False도 미리 지정해두고 사용가능

man = True

def say_myself(name, old, man=True): 
    print("나의 이름은 %s 입니다." % name) 
    print("나이는 %d살입니다." % old) 
    if man: 
        print("남자입니다.")
    else: 
        print("여자입니다.")
        
say_myself("박응용", 27)
say_myself("박응용", 27, True)

결과값
나의 이름은 박응용입니다.
나이는 27살입니다.
남자입니다.

 

 

2)가변 매개변수(parameter)

매개변수 앞에 *을 하나 붙인 것이며, 여러 개의 입력값을 입력가능. 튜플로 출력됨.

값이 몇 개가 될지 모를 때 사용하며, 입력값을 전부 모아서 Tuple로 만듬

def add_many(*args): 
    result = 0 
    for i in args: 
        result = result + i 
    return result
    
result = add_many(1,2,3)
print(result)
결과값 : 6

result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result)
결과값 : 55

 

3)키워드 매개변수(parameter)

매개변수 앞에 **을  붙인 것이며, 딕셔너리로 출력됨

def print_kwargs(**kwargs):
    print(kwargs)
    
print_kwargs(a=1)

결과값 : {'a': 1}

print_kwargs(name='foo', age=3)
결과값 : {'age': 3, 'name': 'foo'}

 

※  args는 매개변수(arguments)의 약자로, 관례적으로 자주 사용

※ kwargs는 keyword arguments의 약자이며, args와 마찬가지로 관례적으로 사용한다.

 

사용순서

함수에서 매개변수를 종류별로 사용할 때, 순서를 지키지않으면 에러가 발생한다

고정 매개변수 - 가변 매개변수 - 키워드 매개변수

def parameter(args=1, *args, **kwargs)

 

 

728x90
반응형

+ Recent posts