라일락 꽃이 피는 날

[Python] 함수 인자 (argument) 본문

프로그래밍/Python

[Python] 함수 인자 (argument)

eunki 2021. 6. 4. 20:31
728x90

인자 (argument)


def func(arg):
    print(arg)

def func(arg): 
    print(arg) 
     
func(1)  # 1
def func(arg1, arg2): 
    print(arg1, arg2) 
    
func('a', 'b')  # a b
func('a')  # Error
func('a', 'b', 'c')  # Error

 

 

 

기본 인자 (default argument)


def func(arg=1):
    print(arg)

def defaultArg(arg=0):
    print(arg)

# 기본 인자값 사용
defaultArg()  # 0

# 인자에 10 전달
defaultArg(10)  # 10
def multiDefault(arg1=0, arg2=0, arg3=0):
    print(arg1, arg2, arg3)
    
# 기본 인자값 사용
multiDefault()  # 0 0 0

# 1번째 인자에 10 전달
multiDefault(10)  # 10 0 0

# 1, 2번째 인자에 10, 20 전달
multiDefault(10, 20)  # 10 20 0

# 1, 2, 3번째 인자에 10, 20, 30 전달
multiDefault(10, 20, 30)  # 10 20 30

# 인자 명을 명시하여 사용
# arg3 인자에 30을 전달하고 나머지는 기본 인자값 사용
multiDefault(arg3=30)  # 0 0 30

# arg2, arg3 인자에 20, 30을 전달하고 나머지는 기본 인자값 사용
multiDefault(arg2=20, arg3=30)  # 0 20 30

 

디폴트 파라미터 뒤에 일반 파라미터가 위치할 수 없다.

def test(a, b, c = 1):
def test(a, b = 1, c = 2):
def test(a = 1, b = 1, c = 3):

def test(a, b = 1, c):  # Error
def test(a = 1, b, c):  # Error
def test(a = 1, b = 1, c):  # Error

 

 

 

가변 인자 (variable argument)

지정된 수의 인자만을 사용하는 것이 아닌 가변적으로 변경되는 인자를 사용하고자 할 때 쓰인다.


def func(*args):
    print(args)

def variableArg(*args):
    print(args)

variableArg(1)  # (1,)
variableArg(1, 2)  # (1, 2)
variableArg(1, 2, 3)  # (1, 2, 3)
variableArg(1, 2, 3, ('a', 'b'))  # (1, 2, 3, ('a', 'b'))
def variableArg(arg, *args, darg=1):
    print(arg, args, darg)

variableArg(1)  # 1 () 1
variableArg(1, 2)  # 1 (2,) 1
variableArg(1, 2, 3)  # 1 (2, 3) 1
variableArg(1, 2, 3, darg=10)  # 1 (2, 3) 10

 

 


키워드 가변 인자 (keyword variable argument)

지정된 수의 인자만을 사용하는 것이 아닌 가변적으로 변경되는 인자를 사용하고자 할 때 쓰인다.
인자를 사용할 때, 키=값의 쌍으로 사용한다.

 

def func(**kwargs):
    print(kwargs)

def keyVariable(**kwargs):
    print(kwargs)

keyVariable(a=10)  # {'a': 10}
keyVariable(a=10, b=20)  # {'a': 10, 'b': 20}
keyVariable(a=10, b=20, c=30)  # {'a': 10, 'b': 20, 'c': 30}
def keyVariableArg(arg, *args, k=10, **kwargs):
    print(arg, args, k, kwargs)

keyVariableArg(1)  # 1 () 10 {}
keyVariableArg(1, 2)  # 1 (2,) 10 {}
keyVariableArg(1, 2, 3)  # 1 (2, 3) 10 {}
keyVariableArg(1, a=1)  # 1 () 10 {'a': 1}
keyVariableArg(1, 2, 3, a=1)  # 1 (2, 3) 10 {'a': 1}
keyVariableArg(1, 2, 3, a=1, b=2)  # 1 (2, 3) 10 {'a': 1, 'b': 2}
keyVariableArg(1, 2, 3, a=1, b=2, k=3)  # 1 (2, 3) 3 {'a': 1, 'b': 2}
728x90

'프로그래밍 > Python' 카테고리의 다른 글

[Python] 람다 함수 (lambda function)  (0) 2021.06.04
[Python] Scope (스코프)  (0) 2021.06.04
[Python] 함수 (def)  (0) 2021.06.04
[Python] String (문자열)  (0) 2021.06.01
[Python] dictionary (사전)  (0) 2021.06.01