함수에 들어가는 인수의 개수가 변하는 것
def profile(name, age, lang1, lang2, lang3, lang4, lang5):
print(f'이름 : {name}\t나이 : {age}', end=' ')
print(lang1, lang2, lang3, lang4, lang5)
if __name__ == '__main__':
profile('유재석', 20, 'python', 'java', 'c', 'c++', 'c#')
profile('강태호', 25, 'kotlin', 'swift', '', '', '')
profile('김병찬', 17, 'python', 'pytorch', 'deep learing', 'c', '데이터분석')
위 처럼 lang1, lang2, lang3 . . . 이렇게 귀찮게 입력을 받아 주었다.
그런데 자세히 보면 강태호라는 사람의 이름의 기술에는 공백이 있는 것을 볼 수 있다.
그 이유는 저렇게 하지 않으면 인수의 개수가 맞지않아서 에러가 뜨게 된다.
한번 해보자
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
def profile(name, age, lang1, lang2, lang3, lang4, lang5):
print(f'이름 : {name}\t나이 : {age}', end=' ')
print(lang1, lang2, lang3, lang4, lang5)
if __name__ == '__main__':
profile('유재석', 20, 'python', 'java', 'c', 'c++', 'c#')
profile('강태호', 25, 'kotlin', 'swift')
가변인자의 갯수를 제한없이 하려면 인자 앞에 *을 붙이면 된다.
def hamsu(name, age, *lang)
이렇게 말이다.
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
def profile(name, age, *lang):
print(f'이름 : {name}\t나이 : {age}', end=" ")
for lang in lang:
print(lang, end=" ")
print()
if __name__ == '__main__':
profile('유재석', 20, 'python', 'java', 'c', 'c++', 'c#')
profile('강태호', 25, 'kotlin', 'swift')
그러면 공백을 입력할 필요가 없고, 귀찮게 일일이 적지않아서 손쉽게 효율적으로 가능하다.