プログラムとか 思ったこととか 徒然ブログ 投稿一覧へ戻る

タグ "send" が付いている投稿一覧

【 Effective Python, 2nd Edition 】throw() メソッドを利用したジェネレータ ( generator ) 内部での状態遷移はなるだけ避けましょう。ネストが深くなってコードの読解性が落ちちゃいますよ!

Tags: Python , generator , iterable , send , iterator , yield , Effective , throw

Published 2020年7月4日23:31 by T.Tsuyoshi

yield from 文や send() メソッドに加えて、ジェネレータを使う際にあまり利用されていない機能として throw() メソッドがあります。 ジェネレータが throw() メソッドによって呼び出されると、再開した時点の、すなわち、前回終了した時点の yield 式自体が渡された例外を即座に投げます。 そして、ジェネレータ内でその例外をキャッチしない場合、呼び出し元にその例外を投げてジェネレータはその時点で動作を終了します。 class MyError(Exception): pass def my_generator(): yield 1 …

【 Effective Python, 2nd Edition 】ジェネレータ ( generator ) に値を注入したいなら、yield from 式と send() 関数の併用よりも、注入する値を提供するイテレータ ( iterator ) を渡しましょう、の巻

Tags: Python , generator , send , iterator , yield , Effective

Published 2020年7月3日20:34 by T.Tsuyoshi

さて今回取り上げる話題は前回の ジェネレータの反復作業中に外部から値を注入して出力結果に反映させよう!代入式の右辺に yield 式があったり、send() メソッドを使ったり!の巻 の続き、という位置づけですので、読んでいない方は目を通しておいていただいた方が理解しやすいと思います。 前回は、send() メソッドを利用するとジェネレータの yield 式に値を設定することが可能になり、その値を利用して次の yield 式からの出力値を変更可能、ということを説明しました。 さて今回は、より複雑な波形を出力したい、という「足るを知らない」人間の欲望に基づいてプログラムをアップデートしなければいけなくなったところから話が始まります。 目指すは1周期の正弦波 (サイン波) ではなく、1周期ごとに異なる振幅、ステップ数からなる複数周期の波形データの出力、です。 これを実現するための実装方法の1つは、yield from 式を利用して複数のジェネレータを組み合わせる方法です。 まずは通常の …

【 Effective Python, 2nd Edition 】ジェネレータの反復動作中に外部から値を注入して出力結果に反映させよう! 代入式の右辺に yield 式があったり、send() メソッドを使ったり!の巻

Tags: Python , generator , send , yield , Effective

Published 2020年7月2日21:51 by T.Tsuyoshi

yield 式を含むジェネレータ関数 ( generator function ) はシーケンスデータの値を1回に1つずつ提供してくれますが、このデータのやり取りはあくまでも一方通行です。 もし、ジェネレータ関数が反復作業をしている最中に、yield 式が出力する値に何らかの変更を加えるようなデータをこちら側から与えて、それに伴って出力の値が変化するような双方向コミュニケーションが取れたらなかなか面白いと思いませんか? 例えば、サイン波1周期を指定されたステップ数で分割した際のそれぞれの時点のおおよそのの値を出力するプログラムを作成するとします。 import math def wave(amplitude, steps): """ amplitude: 振幅 steps: ステップ数 …

アカウント作成、認証機能を追加しました

Tags: django , update , authenticaitoni , email , token , send , account

Published 2020年5月1日10:10 by T.Tsuyoshi

Django で提供されているパスワードリセット機能の動作を参考にしながら、メール認証が必要なアカウント作成機能を作成してみました。 アカウント作成のためにユーザーがアクセスしてくると、 ・ユーザー名 ・姓 ・名 ・メールアドレス を入力してもらうフォームを含んだテンプレートを表示し、 それが POST されてくると、 ・ユーザー名の重複チェック ・メールアドレスの重複チェック ・トークン作成 ・アカウント作成認証のためのリンクアドレス作成 ・メール本文作成 ・アカウント作成認証メール送信 を行います。 ユーザーが、届いたメールの本文に含まれている URL …