■はじめに
雰囲気でpythonを使い始めてからはや1年弱。
教えてもらってから/資格勉強をしてから知ったが連発したのでまとめます。
知らなくても何とかはなりますが知ってるとコードが見やすくなったり、書く量が減ったりするかも。
■ 知らなくても何とかなってしまうかもしれない書き方
◇try: exceptの外のelse
try節の中身が最後まで実行される(exceptの処理にとばない)とelseの中身が実行されます。
例外処理が実行されるとelse内に書かれたprintは表示されません。
- 例外処理を通らない場合
try:
print('処理1')
# raise Exception('処理1の例外発生')
except Exception as e:
print('処理1の例外エラー')
print(e)
else:
print('try-exceptの外のelse処理')
print('処理終了')
C:\demo> python sample.py
処理1
try-exceptの外のelse処理
処理終了
C:\demo>
- 例外処理を通る場合
try:
print('処理1')
raise Exception('処理1の例外発生')
except Exception as e:
print('処理1の例外エラー')
print(e)
else:
print('try-exceptの外のelse処理')
print('処理終了')
C:\demo> python sample.py
処理1
処理1の例外エラー
処理1の例外発生
処理終了
C:\demo>
◇for文の外のelse
for文が中断されずに正常に終了した場合のみelseの中身が実行されます。
continueで処理がスキップした場合も正常終了の判定なのでelseの中身も実装されます。
- for文が中断された場合
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
print("中断されました")
break
print(num)
else:
print("ループが正常に終了しました")
print('処理終了')
C:\demo> python sample2.py
1
2
中断されました
処理終了
C:\demo>
- for文が正常終了した場合
numbers = [1, 2, 3, 4, 5]
for num in numbers:
# if num == 3:
# print("中断されました")
# break
print(num)
else:
print("ループが正常に終了しました")
print('処理終了')
C:\demo> python sample2.py
1
2
3
4
5
ループが正常に終了しました
処理終了
C:\demo>
◇辞書型のkey,valueをfor文のパラメータで使う
<辞書名>.items()を使用することキーとバリューの両方をパラメータとして使用することができます。
comic_author = {
"鋼の錬金術師" : "荒川弘",
"ONE PIECE" : "尾田栄一郎",
"BLEACH" : "久保帯人",
"メイドインアビス" : "つくしあきひと"
}
for comic,author in comic_author.items:
print("作品:",comic)
print("作者:",author)
C:\demo> python sample3.py
作品:鋼の錬金術師
作者:荒川弘
作品:ONE PIECE
作者:尾田栄一郎
作品:BLEACH
作者:久保帯人
作品:メイドインアビス
作者:つくしあきひと
C:\demo>
◇戻り値が複数
関数の戻り値として複数の値を設定することができます。
受け取り側で一つしか変数を指定しなかった場合はリストになります。
def comics_authors():
comic_list = ["鋼の錬金術師","メイドインアビス","青の祓魔師"]
author_list = ["荒川弘","つくしあきひと","加藤和恵"]
return comic_list, author_list
comics, authors = comics_authors()
print(comics)
print(authors)
list = comics_authors()
print(list)
C:\demo> python sample4.py
["鋼の錬金術師","メイドインアビス","青の祓魔師"]
["荒川弘","つくしあきひと","加藤和恵"]
[["鋼の錬金術師","メイドインアビス","青の祓魔師"],["荒川弘","つくしあきひと","加藤和恵"]]
C:\demo>
■ 終わりに
当たり前の内容かもしれないけど、個人的に言われるまで、学習するまで気がつかなかった仕様でした。
使うことでコードの可読性が上がったり全体として各量が減ったりするので積極的に使っていきましょう。
余談ですが、Python3エンジニア認定基礎試験を受けようと考えている人は少なくともこのあたりの知識を知らないと落ちます(実体験)。