728x90
*args와 **kwargs의 용도에 대해서 알아봅시다.
(반드시 args, kwargs라는 명칭을 사용하지 않아도 됩니다. *apple로 써도 됩니다.)
*args
*args는 몇 개의 입력값을 받을지 정해지지 않았을 경우에 대해 사용합니다.
*args가 튜플 형태로 전달되는 것을 확인할 수 있습니다.
*args는 항상 입력 파라미터의 마지막 단에 위치해야 합니다.(**kwargs보다는 앞에)
class Team:
"""팀 노드 생성"""
def __init__(self, *args):
self.member = args # 다음 노드에 대한 레퍼런스
team1 = Team("강아지", "토끼", "고양이")
team2 = Team("사슴", "호랑이")
team3 = Team("개미", "코끼리", "생쥐", "악어")
print(
team1.member,
team2.member,
team3.member,
)
>> ('강아지', '토끼', '고양이') ('사슴', '호랑이') ('개미', '코끼리', '생쥐', '악어')
**kwargs
**kwargs는 dictionary 처럼 key: value 쌍을 입력받습니다.
**kwargs의 key: value 조합은 자유롭습니다.
복수의 **kwargs 입력도 가능합니다.
# 가입된 맴버과 패스워드
members = {
'apple': 123456,
'ball': 135,
'cat' : 13579
}
def check_members(**kwargs):
msg = []
for name in kwargs.keys():
if name in members.keys():
if members[name] != kwargs[name]:
msg.append(f"{name}님, 비밀번호를 다시 입력해주세요")
else:
msg.append(f"{name}님은 팀 명단에 이름이 없습니다.")
if len(msg) == 0:
return ["맴버 전원 확인 완료되었습니다."]
else:
return msg
print(check_members(apple=123456, ball=135, cat=13578, doll=112), end=f"\n{'='*50}\n")
print(check_members(apple=123456, ball=135, cat=13579))
>>
['cat님, 비밀번호를 다시 입력해주세요', 'doll님은 팀 명단에 이름이 없습니다.']
==================================================
['맴버 전원 확인 완료되었습니다.']
입력값으로 받은 맴버가 명단에 있는지, 패스워드는 올바른지 등에 대한 정보를 판별하는 코드를 작성해봤습니다.
굳이 이렇게? 라는 생각이 드시는게 당연하실텐데요. **kwargs의 이해를 돕기위한 것임을 기억해 주세요!!
728x90
728x90
'파이썬 코딩 한줄' 카테고리의 다른 글
pyenv와 virtualenv 활용법 (for Mac) (0) | 2023.01.10 |
---|---|
키워드를 활용한 간단한 제품 추천 컨텐츠 기반 필터링(CBF) (0) | 2022.10.18 |
[pandas apply] 텍스트를 일정 길이만큼 잘라서 분리하기 (0) | 2022.10.14 |
아직도 셀레니움(Selenium)에서 벗어나지 못했다면... (0) | 2022.10.10 |
파이썬 groupby로 요소 모아 보기 (단순 집계 이상으로 활용하기) (0) | 2022.09.21 |