All Articles

リカレントPython

うろ覚えで苦しむリカレントPython

大文字と小文字を意識して書かないとPython警察に捕まりそうなので色々訂正。

Python にも例外処理ってあったんだっけ

あった。そういえば。こんなイメージ。Java でいうtry-catchですなぁ。

try:
  // 例外が発生する可能性のある処理を囲む
  <code....>
except <例外の種類>:
  // 例外が発生したときに書く処理
  <code....>
else:
  // こっちには正常時のみの処理
  <code>

Java でよくみる、発生した例外を全部ぶち込んでいけというサンプルを書きたいなら except で例外を指定しなければおk。サンプル以外でそんなコードを書いて怒られないのかおk?なのかは知らない。

try:
  <code....>
except:
  <code....>

無理やり例外を発生させることも出来る。どんなときに利用できるのかはわからない。

raise <例外クラス>(<message>)

raise MemoryError("メモリが足りない(嘘)")
% python3 ./hogehoge.py
Traceback (most recent call last):
  File "/foo/bar/hogehoge.py", line 2, in <module>
    raise MemoryError("メモリが足りない(嘘)")
MemoryError: メモリが足りない(嘘)

で、これらを組み合わせるとこんな感じでメモリが足りないとサボタージュが出来る(嘘) 例外を e に放り込むのはJavaもPythonも同じような感覚っぽい。MS系だとErrとか言いそうなものだけれども。

try:
  raise MemoryError("メモリが足りない(嘘)")
  print("超絶コスト高のスゴい処理が延々と続く")
except MemoryError as e:
  print(e)
else:
  print("処理完遂!")
$ python3 ./hogehoge.py
メモリが足りない(嘘)

list tuple set 何がなにやら

  • list

    • いつものやつ。重複できる。変更できる。
    hogehoge = ['ABCD','XYZ',123,123]
    hogehoge[0] = 'EFG'
     python3 ./hogehoge.py
    ['EFG', 'XYZ', 123, 123]
  • tuple

    • 重複できる、変更はできない
    hogehoge = ('ABCD','XYZ',123,123)
    hogehoge[0] = 'EFG'
     python3 ./hogehoge.py
     Traceback (most recent call last):
     File "/foo/bar/hogehoge.py", line 2, in <module>
      hogehoge[0] = 'EFG'
      ~~~~~~~~^^^
    TypeError: 'tuple' object does not support item assignment
  • set

    • 重複できない、順序関係ない、addメソッドで追加、removeやdiacardで削除
    • 比較・演算ができるのがキモなのかも
    hogehoge = {'ABCD','XYZ',123,123}
    hogehoge.add(114514)
    python3 ./hogehoge.py
    {'XYZ', 114514, 123, 'ABCD'}

glob ってなんだったっけ

  • 何かの条件を満たしたファイルを取得する。みたいな時に使う
    import glob
    
    // カレントにあるマークダウンのファイル名をゲットしたい
    file = glob.glob('./*.md')
    print(file)

Published Sep 2, 2023

わたしが作成したサイト・サービスをまとめています。最近は割と雑記も多いです。なお、当サイトに記載している情報などは組織・団体の公式見解とは無関係です。