質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • Python 3.x

    7456questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Flask

    252questions

    FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

  • SQLAlchemy

    48questions

    SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

  • ユニットテスト

    37questions

    ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

pythonでいうcontext とは?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 560

わからないこと

タイトル通りです。contextの意味がわかりません。
以下、公式ドキュメントを読みましたが、メタレベルでの定義は理解できますが、公式ドキュメントから具体的かつ正確な意味がわかりません。色々調べてもなんとなくでしか理解できない状態にあります。いまのところ、使い方はなんとなくわかるので雰囲気でつかっていたりしています。

詳しい方で咀嚼して説明して頂けますと嬉しいです。以下三点が気になっています。

  • contextの役割はなにか?
  • なぜ、なんのためにcontextが必要なのか?
  • 文章内にあるpushとは何をしているのか?

質問の背景
pythonでいうコンテキストの意味とflaskでいうコンテキストの違いさえ分からない状態でしたのでpythonでのコンテキストという質問にしました。今の理解では、http requestに対して発生するappを疑似的に起動し、実行後終了するという曖昧な理解にとどまっています。この理解であってますでしょうか?
ここで質問することで自分のわからないところを具体的にし、自分でもっと細かい検索キーワードで検索できればより理解が深まる情報に辿りつけると思い、このような質問を投稿しました。

http://flask.pocoo.org/docs/1.0/appcontext/#creating-an-application-context

Purpose of the Context
The Flask application object has attributes, such as config, that are useful to access within views and CLI commands. However, importing the app instance within the modules in your project is prone to circular import issues. When using the app factory pattern or writing reusable blueprints or extensions there won’t be an app instance to import at all.

Flask solves this issue with the application context. Rather than referring to an app directly, you use the the current_app proxy, which points to the application handling the current activity.

Flask automatically pushes an application context when handling a request. View functions, error handlers, and other functions that run during a request will have access to current_app.

Flask will also automatically push an app context when running CLI commands registered with Flask.cli using @app.cli.command().
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mather

    2018/07/10 17:04

    Pythonではなく「FlaskでいうContext」ですよね?しかもここには2種類のcontextが書かれています。最初から正解を貰おうとするのではなく、まずはその辺の理解についてご自身の感覚を質問内容に書いて整理してみてはどうでしょうか。

    キャンセル

  • sequelanonymous

    2018/07/10 17:38

    ご回答ありがとうござます。pythonでいうコンテキストの意味とflaskでいうコンテキストの違いさえ分からない状態でしたのでpythonでのコンテキストという質問にしました。ここでの二種類のコンテキストとはどのことを言っていますでしょか?コンテキストに種類は一つしかない認識でいます。今の理解では、http requestに対して発生するappを疑似的に起動し、実行後終了するという曖昧な理解にとどまっています。この理解であってますでしょうか?ここで質問することで自分のわからないところを具体的にし、自分でもっと細かい検索キーワードで検索できればより理解が深まる情報に辿りつけると思い、このような質問を投稿しました。

    キャンセル

  • mather

    2018/07/10 18:01

    その内容を質問内容に書いてください。

    キャンセル

  • sequelanonymous

    2018/07/11 18:32

    ありがとうございます!追記しました。最初のご指摘にあった点が未だに理解できないのですが、もし、お答えできるようでしたら教えて頂けると嬉しいです。pythonでいうコンテキストの意味とflaskでいうコンテキストの違いとここでの二種類のコンテキストについてです。

    キャンセル

回答 1

checkベストアンサー

+1

contextには日本語でバッチリ対応する言葉・概念がないので理解が難しいのだと推測します。少なくとも私の場合はそうでした。コンテクストを理解する上で重要な事柄は提示のURLにも明記されています。

(The application) context keeps track of (the application-level) data
コンテクストはひとつながりのデータを保持します。

これによってコンテクスト自体が理解できなくとも、少なくともその役割がデータの保持である点は理解できると思います。そしてそのコンテクストの目的は一連のデータを扱いやすいようにひとまとめにすることです。

また以下のようにも述べられています。

Flask solves this issue with the application context.
Flaskはこの問題(or 課題)をアプリケーションコンテクストで解決します。

時間がないので回答はこのへんで切り上げますが、この情報をもとにもう一度ドキュメントを読み解くと理解が増すと思います。ちなみにコンテクストはsslのような設定が非常に煩雑なところや、状態を保持しながら処理を数珠つなぎにするような場面(clickパッケージ)でも使用します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/11 18:34

    ありがとうございます!ざっくり、理解できました。再度、ドキュメントを読んでみます。そのあと、またご質問させてください。

    キャンセル

同じタグがついた質問を見る

  • Python 3.x

    7456questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Flask

    252questions

    FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

  • SQLAlchemy

    48questions

    SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

  • ユニットテスト

    37questions

    ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。