勉強メモです。
howdoiというpythonのプロジェクトを書き写しています。
appdirs
モジュールの適切なディレクトリを提示してくれる?
doc
MkDocs 使ってみた。
簡単にWebサイトを作ることができる。ymlはその設定ファイル。
pythonで作られてる。
EC2やGitHub Project page にも構築できるみたい
setup.pyを書いてpipでインストール可能にしよう
Python でパッケージを開発して配布する標準的な方法
pip installできるようにするもの
■次はテスト!
このモジュールでは URL (Uniform Resource Locator) 文字列をその構成要素 (アドレススキーム、ネットワーク上の位置、パスその他) に分解したり、構成要素を URL に組みなおしたり、 "相対 URL (relative URL)" を指定した "基底 URL (base URL)" に基づいて絶対 URL に変換するための標準的なインタフェースを定義しています。
URL 構成要素として使用できるよう特殊文字をクオートしたり非 ASCII 文字を適切にエンコードする
URLを使いやすい感じに整えてくれるってことかな
Pythonのinput関数でキーボードからの入力を取得
input()
で入力待ちの状態になる。
入力値は変数に格納できる。str型で取得。
It is a generic syntax highlighter suitable for use in code hosting, forums, wikis or other applications that need to prettify source code.
PyQueryによるWebスクレイピング -クイックスタート-
【初心者向け】Pythonで初めてのスクレイピング
公式doc
ログインを必要とするWebサイトの情報をRequestsを用いて取得しようとする際、その都度GETやPOSTでアクセスするとセッションが途切れてしまい毎回ログイン処理をしないといけません。
これを回避するためにRequestsはSessionモードをサポートしています。
doc
starmapでPythonでの並列処理の結果をリストで受け取る
starmapは並列処理に複数の引数を渡して結果をリストで受け取るらしい
前回のコードだとたまにサブプロセスで実行されることがある、くらいだったのでsleepを入れてみた
from multiprocessing import Pool
import os
import time
def return_id(*args):
time.sleep(2)
return os.getpid()
if __name__ == "__main__":
with Pool(processes=4) as pool:
print(pool.map(return_id, range(4)))
結果
[10644, 10646, 10645, 10647]
マルチプロセスにならない。。。
from multiprocessing import Pool
import os
def return_id(*args):
return os.getpid()
if __name__ == "__main__":
with Pool(processes=4) as pool:
print(pool.map(return_id, range(4)))
multiple_results = [pool.apply_async(os.getpid, ()) for i in range(5)]
results = [res.get(timeout=1) for res in multiple_results]
print(results)
■ 謎
並行処理、並列処理のあれこれ
【Python】マルチプロセスについて
マルチプロセスな処理を実装して、処理を高速化する
- 並列処理:別のプロセスで複数の処理を同時にやる(重い処理向き)
- 平行処理:同じプロセスで複数の処理を同時にやる(待機が多い処理向き)
Poolを使うとプロセス数の指定ができる
keep - PyPI
utils
Your personal shell command keeper
## 2. for文の変数名
for文内で変数を使わない場合はアンダーバーを使うといい
for _, val in some_dict.items():
print(val)
# keyは使わない
■ 関数が多くて迷子になり始めた。。。
[python]print文で色をつけてみよう
変数(定数)にしておくのが普通らしい。
Pythonで環境変数を取得・追加・上書き・削除(os.environ)
os.environ['some_key'] = some_val
で環境変数を設定できる
※システムの環境変数が変わるわけではない
doc
inspect.currentframe - 呼び出し元のフレームオブジェクトを返す(??)
doc
inspect.getouterframes - よくわからないけど実行中のオブジェクトの情報らしきものを返してくれるみたい
Pythonの組み込み関数all(), any()の使い方
any - イテラブルオブジェクトの要素が1つでもTrueであるかどうかを返す
Pythonにおけるlambda()とmap()について現役エンジニアが解説
map関数はイテラブルオブジェクトの各要素に対して同じ処理を行う
lambda関数は「lambda 引数: 返り値」の形で使う
■ anyとmap関数便利だー
cachelibはpythonのライブラリ
github/pallets/cachelib
parse_argsの引数にコマンドライン引数を渡せるみたい
doc
assertはテストだけで使うものではなかった
デバッグ支援のために使える
Pythonで本当に役立つ機能「アサーション」の使い方を解説!『Pythonトリック』から
■ vscodeのデバッグ機能を少しだけ使った
python:callメソッドの基礎
インスタンスを関数のように使ったときに呼ばれる。
Python の例外を別の例外として投げるときの話
組み込み例外
例外をキャッチして別の例外としてraiseする時はfrom
を使う。
except OriginalError as oe:
raise AnotherError from oe
スタックトレースが見やすくなるっていうメリットかなあ
■ クラスの中に自作例外を関数として書いて、raiseで呼び出すのは可読性高くて良いかも
doc
epilogはヘルプ表示で追加説明ができる。
doc
formatter_classはヘルプ出力をカスタマイズできる。
RawTextHelpFormatterは空白を維持する。
Pythonで文字列を折り返し・切り詰めして整形するtextwrap
textwrap.dedent
text の各行に対し、共通して現れる先頭の空白を削除します。
この関数は通常、三重引用符で囲われた文字列をスクリーン/その他の左端にそろえ、なおかつソースコード中ではインデントされた形式を損なわないようにするために使われます。
doc
metavar - 使用法メッセージ(ヘルプ)の中で使われる引数の名前。
doc
nargs - 受け取るべきコマンドライン引数の数。
doc
dest - parse_args() が返すオブジェクトに追加される属性名。
doc
action - コマンドラインにこの引数があったときの基本のアクション。
■ ヘルプ関係の便利関数!