iteralbe 객체와 매개변수
상황
func(⭐️iterable) : iterable 객체를 전달하면서, ⭐️을 붙여서 함수 호출 할 때
func(⭐️⭐️dict) : dict 객체를 전달하면서 ⭐️을 붙여서 함수 호출 할 때
def func(⭐️args) : 함수를 정의하면서 매개변수 args에 ⭐️ 붙일 때
def func(⭐️⭐️args) : 함수를 정의하면서 매개변수 args에 ⭐️⭐️ 붙일 때
객체를 전달하는 과정에서 언패킹이 진행되는 상황 ( 함수 호출 )
func(⭐️iterable) : 리스트, 튜플, 문자열을 풀어서 전달
func(⭐️⭐️dict) : 딕셔너리의 값을 풀어서 전달def who(a, b, c): print(a, b, c, sep = ', ') who(*[1, 2, 3]) # 리스트를 풀어서 매개변수에 각각 전달 > 1, 2, 3 who(*(0.1, 0.2, 0.3)) # 튜플을 풀어서 매개변수에 각각 전달 > 0.1, 0.2, 0.3 who(*'abc') # 문자열을 풀어서 매개변수에 각각 전달 > a, b, c d = dict(a = 1, b = 2, c = 3) who(*d) # *을 붙이면 키가 매개변수에 전달 > a, b, c who(**d) # **을 붙이면 값이 매개변수에 전달 > 1, 2, 3
딕셔너리 키와 값을 동시에 전달
def who(a, b, c): print(a, b, c, sep = ', ') d = dict(a = 1, b = 2, c = 3) who(*(d.items())) # items 함수를 호출하여 뷰 객체로 전달 > ('a', 1), ('b', 2), ('c', 3)
딕셔너리와 매개변수
함수를 정의할 때 매개변수의 선언에 의해 패킹이 진행되는 상황 ( 함수 정의 )
def func(⭐️args) : 값들이 튜플로 묶여서 args에 전달된다.
def func(⭐️⭐️args) : 전달되는 내용이 딕셔너리로 묶여서 args에 전달된다.def func(*args): # 튜플 print(args) func() > () func(1) > (1, ) func(1,2) > (1, 2) func(1, 2, 3) > (1, 2, 3)
def func(**args): # 딕셔너리 func(a = 1) > {'a': 1} func(a = 1, b = 2) > {'a':1, 'b':2} func('a' = 1, b = 2, c = 3) > {'a':1, 'b':2, 'c':3}
def func(*args1, **args2): print(args1) # 튜플 print(args2) # 딕셔너리 func() > () > {} func(1, a = 1) > (1,) > {'a':1} func(1, 2, a = 1, b = 2) > (1, 2) > {'a':1, 'b':2}