헷갈리는 python 가변 매개변수 기본개념

2021-12-20

.

programming_language_TIL(20211220)

[학습자료]

패스트캠퍼스 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online”를 공부하고 정리한 내용입니다.

** URL : https://fastcampus.co.kr/dev_online_pyweb

[학습내용]

  • 위치 가변 매개변수(positional variable length parameter)

(1) 개수가 정해지지 않은 매개변수

(2) 매개변수 앞에 *가 붙는다. (튜플 형태로 받아옴)

예시

def print_fruits(*args):
    print(args)
    for arg in args:
        print(arg)

print_fruits('apple','orange','mango')

출력결과

('apple','orange','mango')
apple
orange
mango
  • 키워드 가변 매개변수(keyword variable length parameter)

(1) 개수가 정해지지 않은 매개변수

(2) 매개변수 앞에 **가 붙는다. (딕셔너리 형태로 받아옴)

예시

def comment_info(**kwargs):
    print(kwargs)
    for key,value in kwargs.items():
        print(key+':'+value)

comment_info(name='민맨',content='열심히하자')

출력결과

{'name':'민맨','content':'열심히하자'}
name:민맨
content:열심히하자
  • 일반적인 매개변수 작성하는 순서

def my_function(위치 매개변수, 기본 매개변수,위치 가변 매개변수, 키워드 매개변수(또는 기본매개변수),키워드 가변 매개변수)

특히 키워드 가변 매개변수는 항상 맨뒤에 넣어줘야 한다.

위치 가변 매개변수가 위치 매개변수 보다 앞에 있을때 예시

def post_info(*tags,title,content):
    print('제목 : ',title)
    print('내용 : ',content)
    print('테그 : ',tags)

post_info('#파이썬','#자바','프로그래밍 언어','프로그래밍 언어는 자바와 파이썬 등 다양합니다')

출력결과 에러가 발생하는 것을 알 수 있다.

TypeError: post_info() missing 2 required keyword-only arguments: title and content

순서를 제대로 했을때 예시

def post_info(title,content,*tags):
    print('제목 : ',title)
    print('내용 : ',content)
    print('테그 : ',tags)

post_info('프로그래밍 언어','프로그래밍 언어는 자바와 파이썬 등 다양합니다','#파이썬','#자바')

출력결과 정상적으로 실행되는 것을 알 수 있다.

제목 : 프로그래밍 언어
내용 : 다양한 매개변수를 정리합니다.
테그 : ('#파이썬','#자바')

굳이 parameter들을 뒤로 빼고 싶을때 방법 예시

def post_info(*tags,title,content):
    print('제목 : ',title)
    print('내용 : ',content)
    print('테그 : ',tags)

post_info('#파이썬','#자바',title='프로그래밍 언어',content='프로그래밍 언어는 자바와 파이썬 등 다양합니다')

출력결과 정상적으로 실행되는 것을 알 수 있다.

제목 : 프로그래밍 언어
내용 : 다양한 매개변수를 정리합니다.
테그 : ('#파이썬','#자바')