Python 小技メモ
main()
関数
Python コードで以下のように main()
という関数を定義してその中に処理を書き、最後に実行する書き方。 回りくどく見えるがいくつかメリットがある。
- 処理全体の流れを把握しやすい。
- 関数の定義を後ろに書ける。
- 意図しない変数の衝突を回避する。
def main():
# 何らかの処理
if __name__ == "__main__":
main()
最後の if
のブロックは何?
if __name__ == "__main__":
の記述は、 このスクリプト自体が Python スクリプトとして実行された場合 (python3 hoge.py
という形で実行された場合) に以降の処理を実行することを意味している。
例えば、モジュールとしてほかのスクリプトから読み込まれた場合は 勝手に実行されると困るのでそれを防いでいる。
不定個の引数をとる関数の定義
引数に *
や **
をつける。 1つだとタプル、2つだと辞書に格納される。 慣例的に *args
, **kwargs
が使われている。
def sum_some_numbers(*args):
return sum(args)
print(sum_some_numbers(1,2,3,4))
# 10
def en2ja(**kwargs):
for k,v in kwargs.items():
print(k, "means", v)
="neko", dog="inu", mouse="nezumi")
en2ja(cat# cat means neko
# dog means inu
# mouse means nezumi
いつも忘れるlistのソート
sort()
はメソッド、破壊的sorted()
は関数、非破壊的
sort()
は元のリストそのものを並び替える:
>>> l = [3, 4, 1, 5, 2]
>>> l.sort(reversed = False)
>>> l
1, 2, 3, 4, 5] [
sorted()
は元のリストはそのままで、要素を並び替えた新しいリストを返す:
>>> l = [3, 4, 1, 5, 2]
>>> ll = sorted(l, reverse = False)
>>> ll
1, 2, 3, 4, 5]
[>>> l
3, 4, 1, 5, 2] [
文字数や絶対値でソート
>>> l = ["ccc", "c", "cc"]
>>> l.sort(key = len)
>>> l
'c', 'cc', 'ccc']
[
>>> l = [3, -4, 1, 5, -2]
>>> sorted(l)
-4, -2, 1, 3, 5]
[>>> sorted(l, key = abs)
1, -2, 3, -4, 5] [
辞書型 — KeyError
への対処
通常、辞書型で存在しないキーを検索するとエラーが返ってくる:
>>> dict = {"one":1, "two":2, "three":3}
>>> print(dict["four"])
KeyError: 'four'
辞書型を使っていると、存在しないキーを指定した時も柔軟にやってほしいと思うことがよくある。 そこで get()
メソッド:
>>> dict = {"one":1, "two":2, "three":3}
>>> print(dict.get("four"))
None
dict.get(key)
で存在しないキーを引数にすると None
が返ってくる。 さらに偉いのは、返ってくる値を第二引数に指定できる。
>>> dict = {"one":1, "two":2, "three":3}
>>> print(dict.get("four", "No such a key"))
No such a key
pdf2pptx
— PDF から PowerPoint スライドへの簡易変換
PDF をページごとにパワーポイントのスライドに貼り付けて使いたい、という単純な操作が、 既存の方法だとページごとにスクショして貼る、という原始的な方法くらいしかなかった。
pdf2pptx
は pdf2pptx input
という単純なコマンドで PDF の各ページを PNG イメージとしてパワポに貼り付ける。
python3 -m pip install pdf2pptx
pdf2pptx --help
pdf2pptx hoge.pdf
-o
,--output
-
出力ファイルの指定。デフォルトは入力ファイルの拡張子
.pptx
。 -r
,--resolution
- 1inch あたりのドット数で解像度を指定。 デフォルトは300だが150とかでも十分可読でファイルサイズも抑えられる。
-q
,--quiet
- ログの非表示
--from
- PDF の何ページ目からパワポに変換するか。
--count
- PDF の何ページ分パワポに変換するか。