前回の記事では関数の書き方について解説を行いました。この記事ではPythonで最もよく使う関数の1つであるprint関数について解説を行います。
print関数とは
既にこれまでにも何度も出てきているので説明不要だと思いますが、print関数は文字列や変数をコンソールに出力する関数です。様々なシーンで活躍する関数ですが、例えば、次のプログラムは計算途中のログを出力するプログラムです。今からこのプログラムを徐々に改良していきます。
current_time_step = 100
time_per_step = 128
energy = 1e-4
print("step:", current_time_step, ", time_per_step: ", time_per_step, ", energy:", energy)
このように変数や文字列を,(コンマ)で区切って渡します。実行結果は次の通りです。
実行結果
step: 100 , time_per_step: 128 , energy: 0.0001
formatによるprint関数の使い方
先ほどの書き方だと、表示する変数の要素が増えてくると少し利便性が悪くなりますし、プログラムの可読性が低下します。そこで、formatを用いたprint関数を使います。次のプログラムは、最初のプログラムをfortmatを使った書き方で書き直したものです。
current_time_step = 100
time_per_step = 128
energy = 1e-4
print("step: {}, time_per_step: {}, energy: {}".format(current_time_step, time_per_step, energy))
まず文字列の中に{ }を埋め込みます。そして、format関数の中に与えた変数が順に{ }の中に埋め込まれる形になります。先ほどより少しだけ記述は長くなりますが、プログラムの見通したがよくなりました。実行結果は先ほどと同じになりますので省略します。1点注意点としては、formatは文字列に対する関数なので、print関数だけでなく、通常の文字列に対して適用可能です。
ここで更に{ }に変数名を割り当てることもできます。次のプログラムを見てください。
current_time_step = 100
time_per_step = 128
energy = 1e-4
print("step: {step}, time_per_step: {time_per_step}, \
energy: {energy}".format(step=current_time_step, time_per_step=time_per_step, energy=energy))
ここでは、{ }の中に変数名を入れ、formatにも同じ変数を対応させることで、変数の対応関係がより分かりやすくなります。また、1行が長くなりすぎる場合には、\(バックスラッシュ or 円マーク)をつけて改行することができます。
formatで出力フォーマットを指定する
format関数は名前の通り、出力フォーマットを指定することもできます。次のプログラムを見てください。
current_time_step = 100
time_per_step = 128
energy = 1e-4
print("step: {}, time_per_step: {:05}, \
energy: {:.2e}".format(current_time_step, time_per_step,energy))
formatの中に:(コロン)を書き、その右側に書式を指定しています。例えば、{:05}とすると、5桁の数字で表示し、足りない部分は0埋めする書式です。このフォーマットは非常によく使います。
例えば、途中の出力ファイルを0埋めせずにステップごとに出力すると、10ステップまでのファイルの場合次のような順になってしまいます。
0, 1, 10, 2, 3, 4, 5, 6, 7, 8, 9。
つまり、1が先頭に来るため、1の次に10が並んでしまうわけです。こういった予期せぬ不具合を防ぐために00001などと出力しておけば、ファイル名が正しい順序で並びます。
また、{.2e}と指定した場合、2桁の指数形式で出力されます。極端に小さな数の場合は、この指数の表示の方が適していますので、状況によって使い分けてください。実行結果は次の通りです。
実行結果
step: 100, time_per_step: 00128, energy: 1.00e-04
まとめ
この記事ではPythonにおけるprint関数の書き方の基本について学びました。print関数は使用頻度のとても多い関数ですので、formatを使った書き方をマスターしていただければと思います。
#
# 最も基本的な使い方
#
print("step:", current_time_step, ", time_per_step: ", time_per_step, ", energy:", energy)
#
# formatによる埋め込み
#
print("step: {step}, time_per_step: {time_per_step}, \
energy: {energy}".format(step=current_time_step, time_per_step=time_per_step, energy=energy))
#
# format + 書式設定
#
print("step: {}, time_per_step: {:05}, \
energy: {:.2e}".format(current_time_step, time_per_step,energy))
最新記事 by t-tetsuya (全て見る)
- 【GPyOpt】Python x ベイズ最適化の基本をマスターしよう - 2020年12月29日
- Python print関数の基本の使い方 - 2020年12月10日
- Python関数の書き方の基本 - 2020年12月1日
・print関数のformatを使った書き方
について理解することができます。