タグ

pythonとデコレータに関するkoma_gのブックマーク (9)

  • FlaskでシンプルにContent-Typeをチェックする(@content_type) - Qiita

    1. はじめに 前回の記事ではflask、cerberus、peeweeを利用したマイクロサービスのコンセプトアプリを作成しました。今回はその際省略したflaskによるContent-Typeのチェック方法について説明します。また、Content-Typeをチェックする関数デコレータの作り方についても紹介したいと思います。 1.1. 今回紹介する@content_type関数デコレータの仕様 flaskのroute()関数デコレータを付与する関数(つまりREST API)に対して付与する 許可するContent-Typeを関数デコレータの引数に指定する HTTPリクエストヘッダのContent-Typeと引数で指定された値を比較する 異なる場合はHTTPステータスの400エラーをレスポンスとして返却する # rest api @app.route('/questions', methods

    FlaskでシンプルにContent-Typeをチェックする(@content_type) - Qiita
  • [Python入門]デコレーターの基礎

    デコレーターとは 連載の第15回「ローカル関数とラムダ式」では関数を受け取る関数や、関数を戻り値とする関数を取り上げた。今回紹介するデコレーターとは、基的には関数を受け取り、関数を戻り値とする関数のことだ(そうではない場合もある。後述)。クラスを受け取り、クラスを戻り値とする関数やクラスも書けるが、稿では関数を受け取り、関数を戻り値とする基的なデコレーターだけを紹介する。 「関数を受け取り、関数を戻り値とする関数」というと難しく感じるかもしれないが、デコレーターの使用例は第29回「クラス変数/クラスメソッド/スタティックメソッド」の「クラスメソッド」で既に紹介している。デコレーターを使うだけなら、以下のように「@デコレーター」(デコレーター式)を使って関数を修飾(デコレート)するだけでよい(以下の例はメソッドだが、使い方は同じ)。

    [Python入門]デコレーターの基礎
  • Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita

    Pythonのアットマーク(@)を使った記法であるデコレータについてまとめる。難しいと思われているかもしれないデコレータだが、デコレータの種類(パターン)を意識することが理解の近道だと思ったので今回は種類別にデコレータの簡単な実装例をあげて解説をしていこうと思う。 対象者 Python のデコレータを学んだことがあるがたまに分からなくなる デコレータを自作しろと言われたらスラスラかけるか不安 知っていると良いこと 関数のスコープ 第一級関数 *args , **kwargs のような記法 デコレータ関数の種類分け 以下2つの要因でデコレータ関数の種類分けが可能だと思われる。 引数を取るか否か ラッパー関数を返すか否か よって組み合わせから計4つのパターンが考えられるが、今回は "引数を取らずラッパー関数を返さないデコレータ"を除いた3つを紹介する。1つ除外する理由は簡単すぎて意味がなさそう

    Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita
  • 【Python】体当たりで学ぶデコレータとスコープ | DevelopersIO

    こんにちは。DI部の春田です。 Pythonのデコレータを使いこなすには、スコープの理解が必要です。スコープの概念を理解しても、いざ実際に実装しようとすると正しく扱えていなかったりすることがあるかと思います。 今回は概念的の話は後回しにし、1つのサンプルコードに対してトライ&エラーを繰り返して、Pythonのデコレータとスコープを体当たりで理解していきたいと思います。概念の話は検索すればたくさんヒットすると思うので、そちらを当たっていただけたらと思います。 今回使用するサンプルコードです。(Python 3.7.3) var_a ~ var_e: 5つの変数 var_f ~ var_h: 3つの引数(パラメータ) outer(var_f): inner(var_g) を内包する関数 inner(var_g): メインの関数 decorator(var_h): inner(var_g)をラッ

    【Python】体当たりで学ぶデコレータとスコープ | DevelopersIO
  • Python: デコレータについて - CUBE SUGAR CONTAINER

    Python の特徴的な構文の一つにデコレータがある。 便利な機能なんだけど、最初はとっつきにくいかもしれない。 そこで、今回はデコレータについて一通り色々と書いてみる。 先に断っておくと、とても長い。 これを読むと、以下が分かる。 デコレータの質 デコレータはシンタックスシュガー (糖衣構文) に過ぎない デコレータの作り方 引数を取るデコレータと取らないデコレータ デコレータの用途 用途はラッピングとマーキングの二つに大別できる デコレータの種類 デコレータは関数、メソッド、インスタンスで作れる デコレータの対象 デコレートできるのは関数、メソッド以外にクラスもある 今回使った環境は次の通り。 尚、紹介するコードの中には、一部に Python 3 以降でないと動作しないものが含まれている。 $ python -V Python 3.6.6 デコレータについて まずはデコレータのおさら

    Python: デコレータについて - CUBE SUGAR CONTAINER
  • デコレータの使いどころ - Qiita

    デコレータの書き方はわかった。 デコレータとはその名の通りデコレートするものだ。 何をデコレートするのかといえばそれはもう関数、関数である。 あとメソッドである。 俺はわかった。たいへんだ。デコレータをわかってしまった。 タケシはそう呟くと弾かれたように走りだした。 だが信号が点滅し始めたので止まった。 そう、彼は交通ルールを守るのだ。 そして暇を持て余すように考える。 書けるようになったら使っていきたいのが人情というものだ。 だが、実際使ってみたいと思うと、いまいち使いどころがわからない。 有効な使い道が思い浮かばないのだ。 そんな人。 ハイ!俺もわかりません! いや、でも、ちょっとわかってきたかも。 なぜデコレータを使うのか なぜデコレータを使うのか? 好ましくない冗長性の排除やDRYのためにデコレータを使う 読みやすさの向上のためにデコレータを使う 思いつくものとしてこういうのがあり

    デコレータの使いどころ - Qiita
  • Pythonのデコレータについて - Qiita

    今回は、Pythonデコレータについて話そうと思います。 はじめに。 エキスパートPythonプログラミング1に沿って勉強していた際に、Pythonのデコレーターという概念が出てきました。ちょっとに書いてある内容では何を言っているかわからなかったので、いろいろ調べてみました。 デコレーターとは デコレートとは修飾する。って意味になりますが、デコレータとは、簡単に言うと、ある関数を修飾するための関数とその仕組みです。例えば、ある関数があったとします。ここでは次のようなtest()関数とその実行スクリプトを見てみましょう。 サンプルスクリプト1

    Pythonのデコレータについて - Qiita
  • Pythonのデコレータをイチから展開・解説してみた 【あれ? ただのクロージャじゃん】編 - すなぶろ

    前回のコードは思い返すだけでも寒気がするほどひどいものでした。そこで今回はPython固有の機能であるデコレータを使って、ちょっとPythonっぽいコードに変更します。 sandmark.hateblo.jp このデコレータ、LispやHaskellのように関数や処理を頻繁に渡す言語に慣れ親しんだ人なら比較的すぐに理解できると思うのですが、そうでない場合は難しく感じるかもしれません。しかし理解してしまえば「なんだそんなことか」といったものなので、もちろん乱用は禁物ですが、適宜使っていくことで明らかに読みやすく宣言的なコードを書くことができます。参考: PEP 318 再掲:リファクタリング対象 「デコレータとはなんぞや」というのは検索すればいくらでも出てきますので、今回ハマった点について書いていきます。また、デコレータが行うこと、行った結果関数がどう変更されるか、も書いてみようかと。 では

    Pythonのデコレータをイチから展開・解説してみた 【あれ? ただのクロージャじゃん】編 - すなぶろ
  • Pythonのデコレータを理解するための12Step - Qiita

    古い記事なんですが, Pythonのデコレータの概念をつかむには良記事だったので和訳意訳してみました. http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/ Step1. 関数 これは基ですね. Pythonにおいて関数はdefキーワードにより関数名とパラメータのリスト(任意)とともに定義できます.また括弧付きで名前を指定することで実行できます. Step2. スコープ Pythonでは関数を作ると新しいスコープが作られます.言い方を変えるとそれぞれの関数がそれぞれに名前空間を持つということです. Pythonではこれらを確認することのできる組み込み関数も用意されていて, locals()で自身の持つローカルな名前空間の値を辞書形式で返却します.

    Pythonのデコレータを理解するための12Step - Qiita
  • 1