概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
Head First Python 第2版 ―頭とからだで覚えるPythonの基本
- 作者:Paul Barry
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
この記事では、「Pythonで書いた既存関数の機能を、Flaskを用いてWebに公開する」という内容について解説しています。
既存関数の内容
def search4letters(phrase: str, letters: str = 'aeiou') -> set: """phrase内のlettersの集合を返す。""" return set(letters).intersection(set(phrase))
上記内容のモジュールが、vsearch
としてsite-packages1にインストールされていることを前提とします。
FlaskによるWebアプリケーションの内容
from flask import Flask from vsearch import search4letters app = Flask(__name__) @app.route('/') def hello() -> str: return 'Hello world from Flask!' @app.route('/search4') def do_search() -> str: return str(search4letters( phrase='life, the universe, and everything!', letters='eiru!' )) app.run()
実際のWebアプリケーションのPythonコードは上記となります。動作の解説は以下です。
- Webサーバの
/search4
というパスに対し、do_search()
関数の結果を出力する do_search()
関数の中で、search4letters()
関数を呼び出しているsearch4letters()
関数を呼び出すために、vsearch
モジュールからsearch4letters
関数をインポートしている
search4letters()
関数の結果は、str()
メソッドを用いて明示的に文字列に変換しているsearch4letters()
関数の結果は、そのままだとPythonの集合形式となるため
上記内容のコードを、任意の場所にhello_flask.py
として保存します。
実行結果
前述のhello_flask.py
を実行し、Webサーバーを起動します。
Webサーバーの起動後にWebブラウザでhttp://127.0.0.1:5000/search4
にアクセスすると、ブラウザ画面に「{'e', 'i', '!', 'u', 'r'}」と出力されます2。
また、Flaskアプリケーションが実行されているコンソールに以下のメッセージが表示されます。
127.0.0.1 - - [09/Feb/2021 06:15:41] "GET / HTTP/1.1" 200 -
なお、現時点でリソース/
に割り付けられているのは上述hello()
関数であるため、http://127.0.0.1:5000/
にアクセスすると、"Hello world from Flask!"というメッセージが表示されます。