매개변수, 가변인수, 키워드인수

Sawol·2021년 5월 28일
0

I Need Python

목록 보기
7/13
post-thumbnail

매개변수(parameter)

def plus(매개변수1, 매개변수2):
    return 매개변수1 + 매개변수2

전달인자(argument)

def plus(매개변수1, 매개변수2):
    return 매개변수1 + 매개변수2
    
plus(전달인자1, 전달인자2)

가변인수(variable argument)

전달인자의 개수를 명확하게 정할 수 없을 때 사용.

def plus(*매개변수1):
    return sum(매개변수1)
    
plus(1,2,3,4,5)   

매개변수를 원하는 이름으로 지어줘도 되지만, 관례적으로 args를 사용.

def plus(*args):
    return sum(args)
    
plus(1,2,3,4,5)   

고정 인수와 가변 인수를 함께 쓸 때는 고정 인수를 먼저 지정해야함.

def plus(a, *args):
    print(a)	# 1
    return sum(args)	# sum(2,3,4,5) = 14
    
plus(1,2,3,4,5)   

키워드 인수(keyword argument)

함수의 인수가 많아지면 인수의 순서를 외워 작성하는 것은 힘듦.
키워드 인수를 사용하면 키워드=값이 되므로 순서를 신경쓰지 않아도 됨.

def people(name, age, addr, phone, blood):
    print(f'이름은 {name} 입니다.')
    print(f'나이는 {age} 입니다.')
    print(f'주소는 {addr} 입니다.')
    print(f'번호는 {phone} 입니다.')
    print(f'혈액형은 {blood} 입니다.')

# bad
people("김철수",22,"지구어딘가","012-3456-7890","B")

# good
people(age=22,phone="012-3456-7890",name="김철수",blood="B",addr="지구어딘가")

공식문서에서 보면 int(x,base=10) 처럼 키워드 인수를 쉽게 찾아볼 수 있다.
참고로 print(10,20,end='')end=''이 키워드 인수이다.

딕셔너리를 활용한 키워드 인수

딕셔너리를 키워드 인수로 사용할 때는 애스터리스크를 두 개 붙여야한다.
딕셔너리에서 한 번 언패킹하면 키를 사용하겠다는 뜻.
두 번 언패킹하면 값을 사용하겠다는 뜻.

def people(name, age, addr, phone, blood):
    print(f'이름은 {name} 입니다.')
    print(f'나이는 {age} 입니다.')
    print(f'주소는 {addr} 입니다.')
    print(f'번호는 {phone} 입니다.')
    print(f'혈액형은 {blood} 입니다.')

dictionary = {'age':22,'phone':'012-3456-7890','name':'김철수','blood':'B','addr':'지구어딘가'}

people(**dictionary)

키워드 인수를 사용하는 가변 인수

관례적으로 **kwargs를 매개 변수로 사용.

def people(**kwargs):
    for kw, arg in kwargs.items():
        print(f'{kw}은(는) {arg} 입니다.')

dictionary = {'age':22,'phone':'012-3456-7890','name':'김철수','blood':'B','addr':'지구어딘가'}

people(**dictionary)

가변 인수와 키워드 인수를 같이 사용할 때는 *args, **kwargs순으로 지정해야함.

def custom_print(*args, **kwargs):
    print(*args, **kwargs)

매개변수의 초깃값 설정

매개변수에 매개변수=값을 설정하면 초깃값을 설정할 수 있다.

def people(blood=`B`):
    print(f'혈액형은 {blood} 입니다.')	# 혈액형은 B 입니다.
    
people()    

초깃값 매개변수 뒤에 일반 매개변수가 오면 오류가 발생한다.

# bad
def people(blood=`B`, name):
    print(f'이름은 {name} 입니다.')
    print(f'혈액형은 {blood} 입니다.')	# 혈액형은 B 입니다.
    
# good
def people(name, blood=`B`):
    print(f'이름은 {name} 입니다.')
    print(f'혈액형은 {blood} 입니다.')	# 혈액형은 B 입니다.
  

0개의 댓글