Python with ステートメント

Python学習【365日チャレンジ!】90日目のマスターU(@Udemy11)です。

無事、3つ目の目標である90日まで到達しました!

なんだかんだ言って、毎日Python学習を継続していられるのは、無理をせず、コツコツと続けているからだと思います。

そんなちょっとずつだと頭に入ってないんじゃないの?

と思われちゃうかもしれませんが、進んでは戻ってを繰り返しているので、意外と頭に残っているものがある一方で、かなり前に学習したものは、そんなのやったな〜くらいしか覚えていないものもあります。

かなりの内容を学習したつもりではいますが、まだまだ初歩の初歩と言えるところですので、焦らずしっかりとPythonのスキルを身に付けていきたいと思います。

ちなみに、次の目標は6ヶ月(180日)ですので、一旦目標のことは忘れておこうと思います。

それではさっそくPython学習をはじめましょう!

昨日の復習

昨日は、ファイルの作成と入力のコードの書き方について学習しました。

f = open('text.txt', 'w')
f.write('Test')
f.close()

組み込み関数のopenwritecloseを使って、ファイルを作成しました。

ファイルを開く際のモードは、上書きモードの'w'を使いましたが、読み込みや追記といったモードがありました。

詳細については、昨日の記事を参考にしてください。

それでは、withステートメントを学習しましょう!

withで自動的に閉じる

ファイルをopenで開いた際は、closeで必ず閉じる必要がありました。

といっても人間は忘れる生き物なので、closeの記述を忘れることがあります。

そこで登場するのがwithステートメントです。

withステートメントは、ファイルを開いた後、処理が終了すれば、自動でファイルを閉じるので、closeを記述する必要がありません。

with open('text.txt', 'w') as f:
    f.write('I am Mark.')

text.txt

I am Mark

asを使って変数を定義して、処理が終わればcloseしてくれます。

他にも使えるwith

withステートメントは、ファイルを開くときに閉じる作業をするだけじゃなく、クラスをオブジェクト化して前後の処理をさせるということができますが、今回は難しくなるので、別の機会に学習します。

簡単に解説しておくと、クラスに__enter____exit__という特殊メソッドを定義して、そのクラスをwithステートメントでオブジェクト化すれば、クラス内の他のメソッド(仮にdoとする)を呼び出したときに、doがサンドイッチされて実行されます。

__enter__メソッドの実行結果
doメソッドの実行結果
__exit__メソッドの実行結果

前後に処理をさせるというところが、デコレーターと似ているようなに感じます。

詳しくは後ほど学習するので、次に登場したときにしっかりと理解を深めようと思います。

目標は達成できる

30日間継続したときに、90日継続を目標にしましたが、先を見ると長いんですよね。

でも、

ちりも積もれば山となる

千里の道も一歩から

のことわざ同様に一つづつ積み上げていけば、途中で投げ出してしまわない限り、必ず達成することができます。

このことをしっかりと頭に入れて、Python学習365日チャレンジ!を達成したいと思います。

それでは、明日もGood Python!