MOテクノロジー

技術をメモしていくブログ

Python

Pythonのデコレータは算数っぽく考えるとわかりやすかった

デコレータはなかなか理解するのが難しかったんだが、算数っぽく考えると割とすんなり飲み込めたのでメモする。 前提としてPythonは、関数内で関数を呼び出せる、関数を引数や関数の戻り値とできることを確認しつつ、ちょっとずつ考えていく。 関数内で関数…

Pythonで超簡易プログレスバー的な

Pythonでプログレスバーを出したい用件があったので調べてみた。 それ用のライブラリもあるみたいだけど、事情によりpip installすることの敷居が高かったので標準ライブラリだけで実装できないか調べてみた。 とりあえずキャリッジリターンとprint関数だけ…

Lambdaからcurlしようとしたらエラー

Lambdaで遊んでるんだけど、ちょっとした検証をしたくてLambdaからhttpリクエストをcurlで出そうとした。ちなみに言語はPython。requestsをimportしてもいいが、zipにしてあげるのがめんどくさかった。 subprocessをimportして、curlをしてみたらエラーが。…

【Python】本当に内包表記の方が速いのか?

『エキスパートPythonプログラミング改訂2版』を読んでいる。 単純なfor文より内包表記の方が処理が早く美しいということなので、どれくらい差があるか確認してみた。 Pythonのバージョンは3.7。timeitライブラリを使って計測する。 リスト内包表記 普通のf…

【Python】venvを使って仮想Python環境を作る

Pythonを使って遊ぶ場合、今まではpipでライブラリを直接ローカル上にインストールしていたが、venvで仮想環境を作ってみたところ結構よかった。 venvとは Pythonに関する仮想環境を作成できる。 これの目的としては環境の分離。PythonのバージョンとかPyPI…

【Python】変数名や関数名の先頭のアンスコ( _, __)の役割

変数名や関数名の先頭にアンスコが1つついているものと2つついているものがあるので調べてみた。 アンスコ1個 PEP 8からの引用 __single_leading_underscore: "内部でだけ使う" ことを示します。 たとえば from M import * は、アンダースコアで始まる名前の…

【Python】可変長引数(*args, **kwargs)の働き

Pythonの引数で*argsや**kwargsが出てくることがあるが、これらについて調べたのでメモ *args と **kwargs の意味 どちらも可変個の引数を受け取るが、以下の違いがある。 *args: 複数の引数をタプルとして受け取る **kwargs: 複数のキーワード引数を辞書と…