packing
함수가 받을 인자의 갯수를 유연하게 지정할 수 있다면 코드를 유연하게 작성할 수 있다.
이런 경우 사용하는 것이 packing이다.
ex)
def func(*args):
print(args)
func(1,2,3,4) # (1, 2, 3, 4) => tuple 형식
packing을 이용해서 하나를 받는 매개변수와 여러개를 받는 매개변수를 구분해서 작성할 수 있다.
ex)
def printAnimal(cat,*dog,bird):
print("cat : ",cat)
print("bird : ",bird)
if dog:
print("dog :")
for name in dog:
print(name, end="")
printAnimal("냥이","멍이","초코","날개")
# "cat : 냥이"
# "bird : 날개"
# "dog : 멍이 초코"
Asterisk(*)를 두개 사용하여 작성하면 dictionary로 관리된다
ex)
def kwpacking(**kwargs):
print(kwargs)
kwpacking(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3} => dictionary 형태
unpacking
packing과 반대로 여러개의 객체를 포함하고 있는 하나의 객체를 풀어주는 개념이다.
ex)
def sum(a,b,c):
return a+b+c
sum([1,2,3]) # error
sum(*[1,2,3]) # 6
dictionary도 비슷한 방식으로 unpacking 할 수 있다.
def cal(first, op, second):
if op == '*':
return first * second
prob = {
'first': 12,
'second': 34,
'op': '*'
}
cal(**prob) # 결과 : 408
dictionary에서 unpacking을 한 후 dictionary끼리 더했을 때 key값이 중복되면 순서상 늦게 정의된 값이 이전 값을 오버라이드 한다.
ex)
a={'a':1,'b':2}
b={'b':3,'c':4,**a}
print(a) #{'b':2,'c':4, 'a':1}
2차원 리스트를 unpacking하는 경우
ex)
a,b,(c,d)=[1,2,3,4]
print(a) #1
print(b) #2
print(c) #3
print(d) #4
'파이썬 > 파이썬의 기본' 카테고리의 다른 글
파이썬 변수 선언 시 주의사항 (0) | 2023.04.01 |
---|---|
파이썬 referenced before assignment 에러 이유 (0) | 2023.01.26 |
[파이썬] 파이썬 언더바 개념 (0) | 2023.01.04 |
[파이썬] 문자열 포매팅 방법 (0) | 2023.01.04 |
[파이썬] lambda 표현식의 사용 (0) | 2023.01.03 |
댓글