[Python] 가변인자

_찬·2022년 9월 21일
0

Python

목록 보기
5/9
post-thumbnail

가변인자란?

함수에 들어가는 인수의 개수가 변하는 것



1. 가변인자 활용 X

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')

가변인자 활용 O

가변인자의 갯수를 제한없이 하려면 인자 앞에 *을 붙이면 된다.

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')

그러면 공백을 입력할 필요가 없고, 귀찮게 일일이 적지않아서 손쉽게 효율적으로 가능하다.

profile
꾸준한 사람이 되길!

0개의 댓글