Flask(__name__)見たまんま、Flaskクラスをインポートしてインスタンス化している。最初くらい詳しく見ていこうと思うのでAPIドキュメントを適当に訳出。中央オブジェクト)としてふるまう。Flaskオブジェクトが一度生成されると、セントラルレジストリ(中央登録者)としてビュー関数、URLルール、テンプレート設定などさまざまなものを登録するものとして振るまう。__name__を明示的に渡す理由については、Flaskに自分が作っているアプリが属しているものを明確にする意味あいがある。Flaskは__name__を利用して、ファイルシステム上のリソース、つまり静的ファイルやテンプレートなどを探す。よいデバッグ情報を出すため、拡張機能などが__name__を利用する。それゆえ、Flaskに__name__を与えるというのは重要な意味を持つのである。単体のモジュールファイルでアプリを作っている場合、間違いは起こらない。パッケージを使っている場合、パッケージの名前をハードコードすることが推奨される。yourapplication/app.pyというアプリを作っているとき、次の2つの方法のうちどちらかをとる必要がある。Flask(__name__.split('.')[0])なぜそうする必要があるのか?アプリケーションはたんに__name__を渡しても(リソースを探索するという点においては)間違いなく動作する。デバッグは苦行のようになる。いくつかのデバッグ拡張はアプリのインポート名に依存している。例としてFlask-SQLAlchemy拡張は、デバッグモードでSQLクエリが発行されているアプリ中のコードを探している。インポート名が適切に書かれていないとデバッグ情報は消失する。__name__やパッケージ周りの話は、実際にアプリ作ってimportしてデバッグして...という作業をしていかないと感覚が掴めないと思う。あとで苦しまなくて済むように頭の片隅においておこう。World!"デコレータでhelloをくるんでいる。World"が返される、という寸法である。デコレータについての説明を始めると長いので省略。Pythonのデコレータを理解するための12Stepなんかをみるとわかりやすいと思う。個人的にはPythonが言語機能として持っている弱いメタプログラミング機構だと思っている(認識が適当...)。ドキュメントには次のような説明がある。browser.4.この関数には、その特定の関数のURLを生成するためにも使われる名前が付与される。関数はユーザのブラウザに表示したいメッセージを返す。そもそも英文の意味が取りづらいと思う。function"のことで、ここではhelloである。0x10c595840>という感じでビュー関数が登録されているのを確認した。name"と説明したのだろうか。*2最後にapp.run()でローカルサーバを起動できる。FLASK_APP=hello.pyという感じで環境変数に登録しておく)。書いてたら記事が間延びしてきたのでここらで一旦切る。*1:このへんは日本語訳があるのでスキップでいいんでは?と思ったが、確認したら翻訳はバージョンが古くて(0.5.1と0.10)英語の最新版(0.12)に追従してない...。ハロワの説明については文章構造をいじってるだけなので別に問題ないけど、のちのち齟齬が出てきそうな雰囲気がある。あとなんか翻訳されたサイトが2種類ある...これはせっかくBitbucketやらGitHub使ってんのに協力せんの?って感じだ。どちらのサイトも後半部は翻訳されないまま放置されているらしく、APIドキュメントなども訳出されていないので、日本語になってない部分に触れつつやっていこうか。*2:それはそれとして、この部分についての他の日本語訳を見たらちょっと悲しい気持ちになった。人のことを強く言える立場ではないが。noise)を...2017-01-25Pythonの簡易な壊し方r/pythonでバズったスレを垂れ流す作業。»プロフィールコメントは常に歓迎します。`ssize_t`とは何か2018-04-01【読んだもの】Pythonは逐一解釈されるのか、それともコンパイルされるのか?(答えはどちらも)イエスだ。(6)はてなブログをはじめよう!cofreeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。