SUPPORT UKRAINE
- Your indifference to the act of cruelty can thrive rogue nations like Russia -
タグ
effective
を含むブログ一覧
【 Effective Python, 2nd Edition 】リストを返す関数を作るなら、ジェネレータを返しちゃダメか1回立ち止まって考えよう、の巻
Published 2020年6月27日19:16 by mootaro23
結果としてシーケンスを返す関数を作成する場合、最も一般的な選択肢は「リストを返す」ということでしょう。
次の例は、受け取った文字列について、文字列中の各単語の先頭インデックス番号と該当する単語のタプルからなるリストを返すものです。
sentence = "Nana is cute and very popular among my friends."
def index…
【 Effective Python, 2nd Edition 】assignment expression (walrus operator, :=) を利用して内包表記におけるサブ書式の重複を回避しよう!
Published 2020年6月26日16:57 by mootaro23
内包表記内の複数の箇所で同じ計算結果を参照したい、ということはよくあることです。
例えば、文房具を扱う会社の受注プログラムを作成するとします。
注文がきた時点で、発送可能な出荷単位以上の在庫があるかどうかを確認し、顧客に表示できるようにしましょう。
# 在庫
stock = {
'stapler': 99,
'notebook': 252,
…
【 Effective Python, 2nd Edition 】内包表記に含める for 文や if 文の数は2つ位までに抑えておかないと読解性が極端に悪くなりますよ、という話
Published 2020年6月25日19:11 by mootaro23
内包表記 (comprehension) には複数の for 文を含めることができます。
例えば、for ステートメントを2つ含んだリスト内包表記で matrix をフラットなリストに変換しようと思います。
同じレベルで並んでいる for 文は左から右へと処理されます。
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat…
【 Effective Python, 2nd Edition 】再帰関数の実行順序をトレースするデコレータを実装しよう - デバック用途にも重宝します!
Published 2020年6月24日21:04 by mootaro23
今回もデコレータに関連する話題ですが、デコレータの詳細については 前回 取り上げましたので、
今回は復習も兼ねながらちょっと面白いプログラムをご紹介します。
このプログラムは、再帰関数 (recursive function) のネスト呼び出し時における実行過程を、各時点の引数と返却値と共に表示するものです。
fibonacci(4) を実行した際の表示は次のようになります…
【 Effective Python, 2nd Edition 】keyword-only arguments (キーワード指定のみ引数) と positional-only arguments (位置指定のみ引数) を使いこなして、コードの読解性と将来的な拡張性を高めよう!
Published 2020年6月22日20:28 by mootaro23
Python では、関数を呼び出す際にキーワード引数 (keyword arguments) を利用することで、引数の役割が明確になりコードの読解性、メンテナンス性が高まったり、将来的に、関数側で新たにデフォルト値を設定したオプションパラメータを追加して下位互換性を維持したまま機能の拡張ができるようになったり、非常に多くの利点を享受することができます。
ここで、割り算の答えを返す単純な…
【 Effective Python, 2nd Edition 】クロージャー関数 ( closure function ) の変数スコープについて - 参照と代入における違いを理解してますか?
Published 2020年6月21日8:21 by mootaro23
数値で構成されるリストの並べ替えをする際に、あるグループに属する数値を前方に配置したいとします。
このようなロジックは、ユーザーにメッセージ等を表示する際、重要度の高いものから表示したい場合などに有効です。
実装する一般的な方法は、リストの sort() の key パラメータに、並べ替えに利用する値を提供するためのヘルパー関数を渡すことです。
def sort_p…
比較特殊関数を実装していないオブジェクトに対する sort() の key パラメータを利用した並べ替え
Published 2020年6月20日8:27 by mootaro23
ご存知のように list タイプでは sort() が提供されていて、デフォルトでは要素が昇順に並べ替えられます。
numbers = [93, 86, 11, 68, 70]
numbers.sort()
print(numbers) # [11, 68, 70, 86, 93]
sort() はほぼ全ての組み込みタイプに適用可能です。
では、オブジェクトに対して…