2020-12-01から1ヶ月間の記事一覧
f-stringはPython 3.6から導入された文字列のフォーマットを制御する方法の1つです。 +で文字列リテラルと文字列変数を結合したり、str.format()を使うよりもコードがすっきりします。 基本 文字列をf''で囲う 変数と置き換えたいときは{変数名}とする name …
Pythonでクラス名やメソッド名から動的にインスタンスやメソッドを取得する方法を紹介します。 インスタンスの取得 importlib.import_moduleを使ってmoduleをimportして、getattrでmoduleからクラスを取得するのが一般的なようです。 from importlib import …
時折、見かける「__main__.py」 ってなにか調べてみました。 python -mで実行したときに呼ばれる 「python -m パッケージ名」を実行するとそのパーケージの__main__.pyが呼ばれます。 パッケージの作り方によっては__main__.py以外のモジュールを呼び出すこ…
引数を扱うときに便利なのがParserです。簡単に引数を処理することができ、定義も簡単です。一度使えばsys.argvを直接処理する気なんてなくなるはずです。 PythonではいくつかParserの選択肢がありますがargparse一択だと思います。 標準ライブラリの選択肢 …
PyCharm + unittestでTDDっぽいことを試しました。最後にテストコードのフォルダ階層をプロジェクトコードのフォルダ階層と一致させたらそれまで動いていた単体試験の大半が動かなくなってしまいました。 ただのsys.pathの理解不足だったのですが同じことで…
PythonのコードでYAMLやJSONのファイルを参照していて、そのファイルをパッケージに含めたいときにどうすればよいか解説します。 そのようなファイルは「リソース」と呼ばれます。 コードの書き方 リソースをopenで読み込むと単体試験ではうまくいきますが、…
PyCharmでプロジェクトの名前を変更したらunittestが動かなくなったりpyenvの仮想環境や__pycache__に古い名前が残ったりして少し苦労した話です。 プロジェクト名変更 コードが完成しunittestの単体テストも全て動いた後に最初に適当に命名したプロジェクト…