コンテンツにスキップ

functoolsの使い方

ipynbFile functoolTest__functoolsの使い方.ipynb

[30]:

# partiald
# 引数を与えた状態の関数を生成する


def hogehoge(*val):
    print(val)


a = functools.partial(hogehoge, 'aaa')

for i in range(10):
    a = functools.partial(a, i)
    a()

Success

('aaa', 0)
('aaa', 0, 1)
('aaa', 0, 1, 2)
('aaa', 0, 1, 2, 3)
('aaa', 0, 1, 2, 3, 4)
('aaa', 0, 1, 2, 3, 4, 5)
('aaa', 0, 1, 2, 3, 4, 5, 6)
('aaa', 0, 1, 2, 3, 4, 5, 6, 7)
('aaa', 0, 1, 2, 3, 4, 5, 6, 7, 8)
('aaa', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

[31]:

# デコレータ


def decoTest(f):
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        print("Calling decorated function")
        print(args)
        print(kwargs)
        print("ST")
        ret = f(*args, **kwargs)
        print("END")
        return ret
    return wrapper


@decoTest
def aaa(a, b, c, d=10):
    print("aaa")


aaa(10, 20, 30, d=20)

Success

Calling decorated function
(10, 20, 30)
{'d': 20}
ST
aaa
END

最終更新日: 2020-01-18 16:15:35