PUROGU LADESU

ポエムがメインのブログです。

速習Python:内包表記、例外処理

リスト内包表記

[]の中にfor文をかいて配列を返すような場合、簡潔に書ける。

t = (1,2,3,4,5)
r = []
for i in t:
    r.append(i)

r = [i for i in t]

ディクショナリ内包表記

zipを使う

w = ['mon','tue','wed']
f = ['coffee','milk','water']

d = {}
for x, y in zip(w, f):
    d[x] = y

d = {x: y for x, y in zip(w, f)}

集合内包表記

{}に値だけ入れれば集合になる。キーバリューを入れたらディクショナリ。

s = set()
for i in range(5):
    s.add(i)

s = {i for i in range(5)}

ジェネレータ内包表記、タプル内包表記

タプルの場合は tupule()
ふつうの()はジェネレータ

g = (i for i in range(5))
t = tuple(i for i in range(5))

スコープ

関数内からグローバル変数を書き換えるにはglobalをつける
locals()でローカル変数を列挙
globals()でグローバル変数を列挙

amount = 8
def foo():
    global amount
    print(amount)
    amount = 5
    print(amount)
    print(locals())

foo()
print(globals())

例外処理

Exceptionで予期しないエラーもキャッチするようなことはしてはだめ
ちゃんと想定するエラーのみをキャッチする

try:
    liex = []
    # liex[3]
    # lino[4]
except IndexError as ex:
    print(f"err: {ex}")
except Exception as ex:
    print(ex)
else:
    print("処理成功、エラーなし")
finally:
    print("常に実行")
独自エラーの作成、Exceptionを継承する
class MyException(Exception):
    pass

エラーを発生させる
raise IndexError('test')