- HOME
- 本当に誰でも読める!! Pythonソースコードの読み方講座(第4回) キーワード編 2:続・構文に関するキーワード
2021年10月14日 20:10
本記事は当社が発行しているシミュレーションメールマガジンVol.4の記事です。
シミュレーションメールマガジンの詳細・購読申込はこちら
のサポートページから
- Pythonソースコードの読み方講座(第1回) Pythonコードの構成要素
- Pythonソースコードの読み方講座(第2回) classにまつわるコードの読み方
- Pythonソースコードの読み方講座(第3回) キーワード編 1:構文に関するキーワード
- Pythonソースコードの読み方講座(第4回) キーワード編 2:続・構文に関するキーワード
- Pythonソースコードの読み方講座(第5回) 関数にまつわるコードの読み方
- Pythonソースコードの読み方講座(第6回) ソースコードに現れる「単語」を読む
- Pythonソースコードの読み方講座(第7回)キーワード編 3:Pythonの生命線?import文について
- Pythonソースコードの読み方講座(第8回)Python コードを俯瞰する 1:コードの領域分割と実行順序
- Pythonソースコードの読み方講座(第9回)Python コードを俯瞰する 2:コードの領域間の「見え方」について
- Pythonソースコードの読み方講座(第10回)Python コードを俯瞰する 3:関数内の関数について
- Pythonソースコードの読み方講座(第11回)yield 文とジェネレータ
- Pythonソースコードの読み方講座(第12回)yield 文とジェネレータ 2
プログラマにもノン・プログラマにも読んでいただきたい「Pythonコードの読み方」講座の第4回です。
今回は構文に関するキーワードの残りととして
try except finally with
を、それに関連するキーワードとして
as
を扱います。
前回、構文に関するキーワードは
- 必ず行の最初に書く
- 行の最後にコロン ":" を配置する
- 続く行はインデント(字下げ)して書く (複数行になってもOK)
という共通点があることを述べました。これらのキーワードにもこの法則が当てはまりますので、まとめて認識しておくとコードを読むのが楽になると思います。
try except finally (+ else)
これらのキーワードは例外(エラー)処理に関わるキーワードで、実際のプログラミングでは重要なものになります。 実際に使うにはエラー処理の方法論などを理解する必要があり難しいですが、読むだけであれば比較的単純です。
try は「試しにやってみる」、exceptは「例外(エラー)が生じた場合」、finallyは「結局のところ」のように読めばOKです。 具体的には以下のようになります:
try: # 処理1を試す (処理1) except (例外の種類): # 指定した種類のエラーが発生した場合、処理2を行う (処理2) else: # 発生しなかった場合、処理3を行う (処理3) finally: # いずれにしても最後に処理4を行う (処理4)
...さりげなく前回紹介した else が紛れ込んでいることにお気づきでしょうか。try も for, while と同様に構文を作るキーワードであり、これらと同様に else ブロックを続けることができるのです。ただし、意味としては「例外が発生しなかったとき」となるので、解釈は if のときに近いものになります。 なお、tryを使う上で必須なのは except 節だけで、else 節と finally 節は省略しても問題ありません。
全体の意味はやや複雑ですが、初心者のうちは try などが出てきたら「エラーが置きたときに困らないように何かしている」程度の認識を持つだけでもよいでしょう。 また、try 構文には他の書き方もありますので、より詳しく知りたい場合は公式ドキュメントなどを確認するとよいでしょう。
with
構文に関するキーワードの最後になります。 with は非常に単純な言い方をすると、「ある背景で処理を行う」というものになります。
with (背景): # ある背景で処理を行う (処理)
「ある背景で処理を行う」というのは具体的には次の2つを合わせたものになっています:
- コードブロックに入るときと出るときに(背景)が指定する処理をそれぞれ行う
- 特に、出るときの処理は(処理)においてエラーが起きても必ず実行される
より具体的にどのような処理が内部で行われるかについては公式ドキュメントを読むのが良いでしょう。
よく使われるのはファイルを開く組み込み関数の open
を使う場合です。ファイルオブジェクトの使用後はcloseメソッドを呼ぶ必要がありますが、使っている間にエラーが生じた場合、そのままではcloseメソッドが呼ばれないまま終わってしまい、ファイルに関するリソースが開放されないままになってしまいます。次のようにwithを用いることでそのようなclose忘れを回避することができます:
with open("./some_file.txt") as fp: (処理) # fp.close()が最後にかならず呼ばれる
やや込み入った話になってしまいましたが、興味がある方は(やはり)公式ドキュメントを確認ください。
この意味やありがたみもプログラミングに習熟していないと分かりにくいかもしれません。読むだけの段階では「ある背景で処理を行っている」というくらいのざっくりした認識を持っておくだけでも良いかと思います。
as
as は他のキーワードとセットで用いられ、「~として」という読み方をします。英語と同様に捉えて問題ありません。 具体的には、今回扱った except や with と同時に使われて、
try: # 処理1を行う (処理1) except (エラー種類) as (名称): # 指定するエラーが生じた場合、 # 起こったエラーの名前を(名称)と名付けて # 処理2を行う (処理2) with (背景) as (名称): # (背景)の名前を(名称)として処理を実行する (処理)
with の具体例は前節の最後の例でさり気なく登場していました。 まだ扱っていませんがモジュールをインポートするキーワード import とも併用して、
# (モジュール名)のモジュールを(名称)という名前でインポートする import (モジュール名) as (名称)
のように使われることもあります。 いずれのケースでも、as は「名前を付けている」と読めば大丈夫です。
前回~今回で構文にかかわるキーワードを扱いました。
if for while else break continue try except finally with as
個別に覚えるのではなくまとめて認識しておくことで、今後コードを読む際の負担が減らせるのではないでしょうか。 また、for 文における else 節など、ややマイナーな使い方も紹介しました。慣れている方もこの機に公式ドキュメントを調べなおしてみると新しい発見があるかもしれません。
S4 Simulation System の開発のほか、機械学習・シミュレーション・数理最適化を幅広く扱い、分野を横断した問題解決に取り組んでいる。
入社後に競技プログラミングをはじめ、PGBATTLE2023にて企業の部団体3位入賞。
著書: 「XAI(説明可能なAI)──そのとき人工知能はどう考えたのか?」リックテレコム
趣味: 合唱