관리 메뉴

웹개발자의 기지개

[Python] 함수 가변인자 공부하기 - *args, **kargs 본문

python

[Python] 함수 가변인자 공부하기 - *args, **kargs

http://portfolio.wonpaper.net 2025. 3. 27. 21:26

함수 튜플/딕셔너리 언패킹

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def concatenate_strings(*args):
    return ''.join(args)
 
# 메인 실행 부분
def main():
    n = int(input("몇 개의 문자열을 입력하시겠습니까? "))
    strings = []
    
    for i in range(n):
        s = input(f"{i + 1}번째 문자열을 입력하세요: ")
        strings.append(s)
    
    result = concatenate_strings(*strings)
    print("합쳐진 문자열:", result)
 
# 함수 실행
main()
cs

 

실행결과

------ 
몇 개의 문자열을 입력하시겠습니까? 3
1번째 문자열을 입력하세요: 안녕
2번째 문자열을 입력하세요: 하세요
3번째 문자열을 입력하세요: 파이썬
합쳐진 문자열: 안녕하세요파이썬
------

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def concatenate_strings(*args):
    result = ''
    for string in args:
        result += string
    return result
 
string_list = []
num = int(input("몇 개의 문자열을 받을까요? 문자열 개수를 입력해주세요: "))
 
for i in range(num):
    s = input(f"{i + 1}번째 문자열을 입력해주세요: ")
    string_list.append(s)
 
print("\n입력한 문자열 목록:", string_list)
print("-" * 30)
print("합쳐진 문자열:", concatenate_strings(*string_list))
cs

 

실행결과

---------
몇 개의 문자열을 받을까요? 문자열 개수를 입력해주세요: 3
1번째 문자열을 입력해주세요: 안녕
2번째 문자열을 입력해주세요: 하세요
3번째 문자열을 입력해주세요: 파이썬

입력한 문자열 목록: ['안녕', '하세요', '파이썬']
------------------------------
합쳐진 문자열: 안녕하세요파이썬

---------

 

string_list = ["안녕", "하세요", "파이썬"]  # 리스트다
concatenate_strings(*string_list)

내부적으로 string_list은 튜플처리된다.
내부적으로 args = ("안녕", "하세요", "파이썬") 처리된다.


concatenate_strings("안녕", "하세요", "파이썬") 
직접 args = ("안녕", "하세요", "파이썬") 되어서 정상 입력된다.


concatenate_strings("a", "b")      -> args = ("a", "b")
concatenate_strings(*["a", "b"])   -> args = ("a", "b") (리스트 언패킹됨)
concatenate_strings(("a", "b"))    -> args = (("a", "b"),) (튜플 한 개)
concatenate_strings(*("a", "b"))   -> args = ("a", "b") (튜플 언패킹됨)

 

 

**kwargs란?
**kwargs는 **Keyword Arguments(키워드 인자)**를 받아서 처리하는 파이썬의 가변 인자 문법

즉, 인자를 key=value 형태로 여러 개 넘길 수 있다. 함수 안에서는 이것이 딕셔너리로 들어온다.

 

1
2
3
4
def show_info(**kwargs):
    print(kwargs)
 
show_info(name="Alice", age=25, job="Developer")
cs

 

실행결과

{'name': 'Alice', 'age': 25, 'job': 'Developer'}

 

 

**kargs 언패킹

 

1
2
3
4
5
6
7
8
9
10
11
def show_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key} : {value}")
 
info = {
    "name""Bob",
    "age"30,
    "language""Python"
}
 
show_info(**info)  # 딕셔너리를 언패킹해서 넘김
cs

 

실행결과

-------

name : Bob
age : 30
language : Python

-------

 

 

주의할점은 *args 가 **kargs 보다 먼저와야 한다.

 

Comments