Python入門 関数内関数、クロージャー、デコレーター
# 関数内関数
def outer(a, b):
def plus(c, d):
return c + d
r1 = plus(a, b)
r2 = plus(b, a)
print(r1 + r2)
outer(1, 2)
# クロージャー
# def outer(a, b):
#
# def inner():
# return a + b
#
# return inner
#
# f = outer(1, 2)
# r = f()
# print(r)
def circle_area_func(pi):
def circle_area(radius):
return pi * radius * radius
return circle_area
ca1 = circle_area_func(3.14)
ca2 = circle_area_func(3.141592)
print(ca1(10))
print(ca2(10))
# デコレーター
def print_more(func):
def wrapper(*args, **kwargs):
print('func:', func.__name__)
print('args:', args)
print('kwargs:', kwargs)
result = func(*args, **kwargs)
print('result:',result)
return result
return wrapper
def print_info(func):
def wrapper(*args, **kwargs):
print('start')
result = func(*args, **kwargs)
print('end')
return result
return wrapper
@print_info
@print_more
def add_num(a, b):
return a + b
r = add_num(10, 20)
print(r)
@print_info
def sub_num(a, b):
return a - b
# f = print_info(add_num)
# r = f(10, 20)
# print(r)
# print('start')
# r = add_num(10, 20)
# print('end')
#
# print(r)
この記事が気に入ったらサポートをしてみませんか?