概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
Head First Python 第2版 ―頭とからだで覚えるPythonの基本
- 作者:Paul Barry
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
今回は、「最も基本的なWebアプリケーション」の各行の動作についての解説です。
Webアプリケーションで起こること概説
from flask import Flask app = Flask(__name__) @app.route('/') def hello() -> str: return 'Hello world from Flask!' app.run()
上記は、「Flaskを用いてWebアプリケーションを定義し、実際にWebサーバーを起動する」という動作をする最も基本的なコードです。具体的には以下の動作をします。
flask
モジュールからFlask
クラスをインポートするFlask
クラスのインスタンスapp
を生成する- 関数をURLでデコレートする
- 3.でデコレートされる関数を定義する
- Webサーバを起動する
Flask
クラスのインポート
from flask import Flask
flask
モジュールからFlask
クラスをインポートします。
- モジュール名とクラス名の大文字・小文字について
- Pythonは大文字小文字を区別する
- モジュール名は小文字の'f'から始まる
- クラス名は大文字の'F'から始まる
- 「クラス」は、「一群のデータと、関係する関数をひとかたまりとした設計図」といえる
- フィールド…一群のデータ
- メソッド…関係する関数
- 今回用いる
Flask
クラスは、「Webサーバーを稼働させるために必要なデータと関数をひとかたまりとした設計図」といえる
Flask
クラスのインスタンスの生成
app = Flask(__name__)
Flask
クラスのインスタンスを生成し、新たな変数app
に代入します。
- クラスは、その実体たるインスタンスを生成しなければ、実際に使用することはできない
- Pythonにおけるインスタンスの生成は、クラス名と同名のメソッドを呼び出すことにより行われる
- 引数の
__name__
は、「アクティブなモジュールの名前」を意味するPythonの特殊キーワードである
関数をURLでデコレート
@app.route('/')
Pythonのデコレータ機能を用いて、関数をURLに割り付けます。ここでは@app.route('/')
というデコレータを定義しています。
- Pythonにおける「デコレータ」は、「既存の関数の振る舞いを、当該関数のコードを書き換えることなく変更する」という操作を実現するための機能・構文である
@
で始まる文がデコレータ構文
@app.route('/')
というデコレータ構文の意味- 次の行に書かれる関数が、Webサーバのロケーション「
/
」に割り付けられることを意味する - 「
route
デコレータがいかなる意味を持つか」については、Flask
クラスにて定義されている
- 次の行に書かれる関数が、Webサーバのロケーション「
デコレート対象の関数の定義
def hello() -> str: return 'Hello world from Flask!'
@app.route('/')
というデコレータが適用される関数は、hello()
関数です。hello()
関数そのものは、一般的なPythonの関数です。
Webサーバの起動
app.run()
Flask
クラスのインスタンスのrun()
メソッドを実行すると、Webサーバが起動されます。
- WebサーバのデフォルトのURLは
127.0.0.1
である - Webサーバのデフォルトのポート番号はTCP
5000
番である