Skip to content

Python:Function

Python functools package.

Built-in Functions

filter

filter(function, literable)

두번째 인수인 반복 가능한 자료형 요소들을 첫번째 인자 함수에 하나씩 입력하여 리턴값이 인 것만 묶어서 돌려준다.

reduce

WARNING

python3 부터 내장함수에서 빠짐. 대신 functools 패키지에서 사용할 수 있다.

reduce(function, iterable[, initializer])

Example:

from functools import reduce
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
# = ((((1+2)+3)+4)+5)

args and kwargs

*args는 파라미터를 몇개를 받을지 모르는 경우 사용한다. 튜플 형태로 전달된다. **kwargs는 파라미터 명을 같이 보낼 수 있다. 딕셔너리 형태로 전달된다.

def print_param3(*args, **kwargs):
    print args
    print kwargs

print_param3('a', 'b')
#('a', 'b')
#{}

print_param3(third = 'c', fourth = 'd')
#()
#{'fourth': 'd', 'third': 'c'}

print_param3('a', 'b', third = 'c', fourth = 'd')
#('a', 'b')
#{'fourth': 'd', 'third': 'c'}

튜플(Tuple)형식 가변 인자전달

def test_var_args(farg, *args):
    print "formal arg:", farg
    for arg in args:
        print "another arg:", arg

test_var_args(1, "two", 3)

사전(Dictionary)형식 가변 인자전달

def test_var_kwargs(farg, **kwargs):
    print "formal arg:", farg
    for key in kwargs:
        print "another keyword arg: %s: %s" % (key, kwargs[key])

test_var_kwargs(farg=1, myarg2="two", myarg3=3)

가변인자와 사전의 동시사용

*arg, **kwargs, 형식 인자(format args)의 사용순서:

def some_func(fargs, *args, **kwargs):
    # ...
    pass

가변인자 By-pass

가변인자를 다시 전달하고 싶을 경우, *또는 **와 함께 인자에 적어줘야 한다.

d = dict(p1=1, p2=2)
def f2(p1,p2):
    print p1, p2
f2(**d)

See also

Favorite site

Variable argument