壁にぶち当たりました
今日の授業は難解でした。
たぶん、しっかり理解できている人は、半数に満たないんじゃないかな?
満たない側の人間です、はい。
Javaではまず見ない、できないことなので、
「これぞ、python!」
といったところでしょうか?
デコレータ
なにに詰まったかというと、
「デコレータ」
です。
デコレータを一言でいうと、
「ほかの関数に機能を追加する」
「ある関数を修飾するための関数とその仕組み」
「すでにある関数に処理の追加や変更を行う為の機能」
だそうです。
ヨクワカラナイ
形式としては
@追加機能を修飾するデコレータ関数名
def 機能を追加される関数名
とのこと。
例を挙げると
def deco(func) : def wrapper(x) : wx = "---" + x + "---" return func(wx) return wrapper @deco def printmsg(x) : print(x, "を入力しました。") str = input("メッセージを入力してください。") printmap(str)
printmsg() を実行する際に、
deco()が呼ばれて、
wrapper()が呼ばれて、
wrapper()のなかで、printmsg()が呼ばれる
カンジ?
複雑です。
いくつか参考になりそうなサイトを見てみます。
う~~~ん
わかったような、わからないような。。。
聞いた話によると、
モジュールに用意されているデコレート関数を使って、
自前の関数(機能を追加される関数)を拡張する用途で使われるらしい。
なんとなく理解。
した、つもり。
いま、これ以上考えても飲み込めなそうなので、
時間をかけて咀嚼することにします。