【Python】with構文とは?知らなくてもいいけど知るとお得な書き方!

どーも Takeです。

この記事では、Pythonの「with構文」について簡単に解説します。

 

結論からいいますが、with構文がわからなくてもプログラミング開発はできます

私は Python を学び始めた当初、まったくwith構文がわかりませんでした

 

しかし、知っているとより簡単にソースコードが書くことが可能になり、可読性が向上します。

 

with構文を使うことのメリット
  1. 可読性の向上(ソースコードが読みやすくなります!)
  2. 安全性の向上(エラー処理なしに処理できます!)

 

この記事では with構文とは何なのか?どう使うのか?簡単にまとめます。

 

with構文とは?

Pythonのwith構文とは、ある処理の開始~終了を「簡単に」「安全に」書くことができる構文です。

 

with構文はファイルのオープン、クローズ処理やデータベースへの接続処理などに使われます。

それでは、つぎに具体的にソースコードを用いて説明します。

 

with構文の具体例

例として Python で「ファイルの中身を読み込む処理」を「with構文」がある場合、ない場合で説明します。

まずは「with構文なし」の例を下記に示します。

 

これは「test.csv」ファイルの中身を表示させる処理を行っていますが、

ファイルの中身を表示させるためには

ファイルを開くための「open」関数、ファイルを閉じるための「close」関数を利用する必要があります。

 

上記に対し、「with構文あり」の例を下記に示します。

 

こちらも同様に「test.csv」ファイルの中身を表示させる処理を行っていますが、

上記に比べすっきりかけている(可読性が向上している)のではないでしょうか?

 

また、こちらでは明示的にファイルを閉じるための処理の記載が不要です。

 

これら2つのソースコードは同じ3行くらいの短い処理ですが、

仮にこれが100行、200行などの大規模な処理の場合、ファイルのクローズ処理を忘れてしまうケースがあります。

クローズ処理をし忘れたために次の処理が動作し、ファイルアクセスできず後続処理ができなくなる...

そういったリスクを with構文は回避できます。

 

with 構文を使うメリット!
  1. ソースコードがすっきりする!(可読性が向上!)
  2. 終了処理を書かなくてよい!(安全性の向上!)

 

with構文で使えるクラスの実装方法

少し難しい話ですが、Python では自分で作成したクラスをwith構文で利用できます。

クラスを実装する場合、下記2つのメソッドを定義します。

  1. __enter__(self)
  2. __exit__(self, exc_type, exc_val, exc_tb)

 

例えば下記のようなソースコードがあるとします。

 

これは「MyClass」クラスを定義し、その中に「__entry__」「__exit__」の2つのメソッドを実装します。

「with MyClass() as m:」でクラスを呼び出すと、下記のようになります。

 

この結果は下記のような流れが動作したためです。

  1. 処理が開始し「__entry__」メソッド処理が実行され、「entry」が表示されます。
  2. with 内の処理が実行され、「処理開始!」が表示されます。
  3. 処理が終了し「__exit__」メソッド処理が実行され、「exit」が表示されます。

 

最後に

いかがでしたでしょうか?

Pythonの「with構文」について簡単に解説しました。

この記事を参考にぜひ「with構文」を使いこなして下さい!

ではでは。

プログラミング学習、独学では難しくないですが?
  • プログラミングをどう勉強したらいいのかわからない
  • わかりにくい参考書が多く、自分一人では解決できそうにない
  • 壁にぶつかった時の解決策がわからない
そんな人にはプログラミングスクールtech boost」がおすすめです。

 
 

プログラミングスクールtech boost」の魅力
  1. オーダメイドの自分の目標にあったプランが受講できる!
  2. 現役エンジニアがあなたの学習を全力サポート!
  3. スクール卒業後のキャリアサポートも充実インターン/就職/転職/独立 など
  4. オリジナル Web アプリも作れるようになります!
  5. 近年トレンドの AI や IoT、ブロックチェーンも学習できます!
  6. 受講スタイル(通学かオンライン授業)も選択可能!

 

こんな人におすすめ!

  • 未経験からでもプログラミングをしっかり学びたい!

未経験からでも受講期間中にオリジナルサービス開発レベルまで全力でサポートします。

 

  • プログラミングを一人で学ぶことに限界を感じた!

未経験で一からプログラミング学習するには限界があります。

現役エンジニアがあなたの目標に沿った学習プランを提案してくれるので安心して学習できます。

 

  • 技術力をつけて、IT企業に就職やフリーランス、独立を目指したい!

卒業後のキャリアサポートも充実しているため、未経験からも IT 業界に参入できます。

 

悩んでいるなら、お気軽に無料説明会へ!

現役エンジニアの私がいいますが、IT 業界は圧倒的な人材不足です。

 

スクールは料金が高いからなあ」と悩まれている人もいると思いますが、

IT業界は仕事が有り余っているため、一度学べば速攻で資金回収できます。

 

もしプログラミング学習で悩んでいたり将来的に IT企業、フリーランスなどで働きたいのであれば、

プログラミングスクール「tech boost」へ無料相談だけでもいってみてはいかがでしょうか?

おすすめの記事