本当に誰でも読める!! Pythonコードの読み方講座 (第4回) キーワード編 2: 続・構文に関するキーワード

  • HOME
  • 本当に誰でも読める!! Pythonコードの読み方講座 (第4回) キーワード編 2: 続・構文に関するキーワード

本記事は当社が発行しているシミュレーションメールマガジンVol4.の記事です。

シミュレーションメールマガジンの詳細・購読申込はこちら

プログラマにもノン・プログラマにも読んでいただきたい「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 節など、ややマイナーな使い方も紹介しました。慣れている方もこの機に公式ドキュメントを調べなおしてみると新しい発見があるかもしれません。

監修:株式会社NTTデータ数理システムNTTデータ数理システムは「数理科学とコンピュータサイエンスにより現実世界の問題を解決する」をミッションとして設立され、35年以上にわたり皆様の課題解決を支援してきました。機械学習、統計解析、数理計画、シミュレーションなどの数理科学を背景とした技術を活用し、業種・テーマを問わず幅広く仕事をしています。

株式会社NTTデータ数理システム
〒160-0016 東京都新宿区信濃町35番地 信濃町煉瓦館1階
http://www.msi.co.jp
「数理科学の基礎知識」e-book無料ダウンロードはこちら

関連記事