そろそろデコレーターの話をしましょうか｡
そして今､ 彼らのキーワードはPythonです｡
実際にデコレーターも見たことがありますしね｡
クラスを作っていた頃を覚えていますか？
クラスメソッドとスタティックメソッドがあることを教えましたね｡
と言ったら､ 「おい､ やめろ」と｡
心配しないでください｡
これについては､ 後ほどお話します｡
まあ､ これはもう後の祭りですね｡
デコレーターはこんな感じ｡
アド・サインとそれに続く名前のようなものがあるのです｡
しかし､ デコレータが何であるかを完全に理解するためには､ Pythonの関数について､ そしてなぜ関数がそれほど強力であるかを説明する必要があります｡
これがPython in Pythonのすてきなところです｡
機能とは､ いわゆる一等市民です｡
つまり､ 変数のように受け渡すことができるのです｡
関数内の引数になることもある｡
彼らは､ まるで､ 変数のように行動するのです｡
お見せしましょう｡
もし私がhello関数を作ったら､ 正直言って全く役に立ちません｡
だって､ 挨拶だけなんだもん｡
こうすれば
関数はPythonの変数と同じようなものだと言ったのを覚えていますか？
ここでも､ すべてのプログラミング言語がそうであるとは限らないことがわかる｡
だから､ やろうと思えば､ 挨拶は2に等しいと言えるんです｡
こんにちは｡
挨拶文を印刷すると､ そうなるように｡
そして､ これを実行します｡
得ることができます｡
もしもし？
合格したらどうしよう？
もしもし？
こんな感じ？
これを実行すると
まあ､ 関数の位置はメモリで取得するので､ こんな感じでグリット使ってちゃんと実行するんですけどね｡
hello関数を呼び出す必要があります｡
なるほど｡
こうしたらどうだろう？
削除と言ったら？
こんにちは｡
Pythonのキーワードで､ その関数を削除する｡
どうなると思いますか？
これを実行して見ましょう｡
ふむ｡
それは期待通りですか？
グレーテがまだ動くと思ってたのか？
Pythonの面白いところは､ helloを作ると､ これが今度はメモリ上に作成されるところです｡
4行目まで来たら､ おい､ greetはhelloを指すぞと言うんです｡
だから､ ハローはまだここで呼び出すことができる｡
まだ挨拶はできる｡
なぜなら､ helloはメモリ上のその場所を指す関数の名前だからです｡
しかし､ delete helloを実行すると､ この関数､ つまりメモリ上にあるこの関数への名前参照を削除しますよ､
と言うだけです｡
しかし､ 全く別の変数がこの関数を指しているため､ 挨拶はまだです｡
ハローワードを削除します｡
じゃあ､ こうやって挨拶すればいいのか？
エラー名が出る｡
ただし､ Helloは定義されていない｡
greetはメモリ上でこの場所を指したままです｡
だからPythonは賢いので､ 「おい､ helloを削除しろと言ったから､ helloという名前を削除するぞ」と言うことができます｡
でも､ グレがまだ指さしてるので､ 機能を削除するつもりはないです｡
つまり､ Pythonの関数は､ 変数と同じような働きをするのです｡
彼らは一級市民です｡
また､ 関数を渡すこともできる｡
引数の内側あたり､ ですね｡
私がhelloと言った後､ このhelloが別の関数を受け取り､ それを呼び出すとします｡
このように機能します｡
まあ､ 例えばgreet関数を作ればいいんですけどね｡
挨拶することを定義する｡
そして､ この関数はプリントするだけです｡
まだ､ ここにいる｡
今､ 私が電話したら､ この中に｡
もしもし？
とともに｡
ご挨拶
あるいは､ はっきりさせるために､ aは2に等しいとしましょう｡
こんにちは､ ご挨拶です｡
を印刷したら､ どうなるんだろう？
それでもうまくいくのは､ 私が「おい､ この関数を呼んでくれ」と言うからです｡
もしもし？
オーチ 関数を呼び出しているところです｡
引数greetでこんにちは｡
そこで､ ここに行って､ 関数と関数とは何かと聞いてみます｡
この関数を呼び出したいのですが､ この括弧があるので､ どの関数にジャンプするのか､ この場合は素晴らしいです｡
そこで､ ここに行って､ 「ちょっとこれを印刷してみてください」と言うのです｡
hello関数が呼び出してくれるので､ ここで呼び出す必要はなかったのです｡
では､ なぜ私はあなたにそのすべてを教えたのでしょうか？
それがデコレーターとどう関係があるのですか？
デコレータは､ このような機能､ つまり､ 関数がPythonの第一級市民のように変数のように振る舞う機能があるからこそ､
実現できるのです｡
そして､ デコレータの下について学び始めると､ 彼らはこの関数の力を使っているのです｡
今､ そしてこれからの動画｡
自分たちで作る方法､ その意味､ そしてこのデコレーターという考え方を発展させるためのお話をします｡
しかし､ ここではデコレーターの仕事を簡単に紹介します｡
デコレーターは､ 私たちの機能をさらに高めてくれます｡
もし､ ここに挨拶回りの機能があったら｡
このように､ ある種のデコレーターを追加することで､ 関数をスーパーチャージし､ 余分な機能を追加することができるのです｡
これは､ Python インタープリタに､ この hello 関数に特別な機能を持たせたいことを知らせます｡
しかし､ 次のビデオでは､ このテーマをもう少し掘り下げてみましょう｡