AIっておもしろい?

離職者等再就職訓練でAIを勉強するブログです

壁にぶち当たりました

今日の授業は難解でした。

たぶん、しっかり理解できている人は、半数に満たないんじゃないかな?
満たない側の人間です、はい。

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()が呼ばれる
カンジ?

複雑です。

いくつか参考になりそうなサイトを見てみます。

qiita.com
www.sejuku.net

う~~~ん

わかったような、わからないような。。。


聞いた話によると、
モジュールに用意されているデコレート関数を使って、
自前の関数(機能を追加される関数)を拡張する用途で使われるらしい。

なんとなく理解。
した、つもり。

いま、これ以上考えても飲み込めなそうなので、
時間をかけて咀嚼することにします。

次回予告

たぶん、あしたもデコレータの復習に時間がとられると予想。
明日には理解できることを期待します!
がんばれ、あしたのワタシ!!

あ、あと、ラムダ式もイマイチしっくりこないんですよね(笑