🙌
デコレータは「関数名を引数にできる」ことが分かれば簡単
関数名の引数
def start_end(f):
def plus_st_en(x):
print("----")
f(x)
print("----")
return plus_st_en
def f(x):
print(x)
x = 987
start_end(f)(x)
#----
#987
#----
同じコードがデコレータを使って簡潔に書ける
def start_end(f):
def plus_st_en(x):
print("----")
f(x)
print("----")
return plus_st_en
@start_end
def f(x):
print(x)
x = 987
f(x)
#----
#987
#----
一番汎用性が高い書き方は?
- 変数の数が任意
- 返り値が存在
def start_end(f):
def plus_st_en(*args, **kwargs):
print("----")
ans = f(*args, **kwargs)
print("----")
return ans
return plus_st_en
@start_end
def f(x,y,z):
print(x)
print(y)
print(z)
return x+z
x = 987
y = "uuuu"
z = 7777
print(f(x,y,z))
#----
#987
#uuuu
#7777
#----
#8764 #return
Discussion