[Python]printのflushを省略しない理由と、文字と変数の表示

Pythonにおいて、データをコンソールに出力するためには、print関数を使用します。

print関数の基本的な使い方とは

print関数は、引数に渡されたデータをコンソールに出力します。

以下は、文字列を出力する例です。

print("Hello, World!")

実行結果:

Hello, World!

また、複数の引数を渡すこともできます。

print("Hello", "World!")

実行結果:

Hello World!

print関数で文字と変数を表示する方法

print関数では、文字列に変数を埋め込むことができます。

以下は、変数を埋め込んだ例です。

name = "John"
print("My name is", name)

実行結果:

My name is John

print関数のflushパラメータについて

print関数には、flushパラメータがあります。このパラメータは、出力バッファをフラッシュするかどうかを決定します。

出力バッファとは、コンソールに出力する前に一時的にデータを格納する場所のことです。データがたまった時点で、バッファの中身が一気に出力されます。

以下は、flushパラメータを指定しない例です。

import time
for i in range(5):
    print(i)
    time.sleep(1)

実行結果:

0
1
2
3
4

一方、flushパラメータをTrueにすると、出力バッファを即座にフラッシュするため、コンソールに出力されるタイミングが変わります。

import time
for i in range(5):
    print(i, flush=True)
    time.sleep(1)

実行結果:

0
1
2
3
4

flushを省略しない理由

flushパラメータをTrueにすると、コンソールに出力するタイミングが変わるため、プログラムの挙動が異なる場合があります。

特に、プログラムが長時間実行される場合は、出力バッファが大量にたまり、コンソールに出力されるタイミングが遅くなることがあります。

このため、プログラムの実行中にコンソールに進捗を表示する場合は、flushパラメータをTrueにすることをおすすめします。

print関数の便利な使い方とテクニック

以下は、print関数を使った便利なテクニックです。

文字列の連結

複数の文字列を連結する場合は、+演算子を使用します。

name = "John"
age = 30
print("My name is " + name + ", and I am " + str(age) + " years old.")

実行結果:

My name is John, and I am 30 years old.

フォーマット文字列

文字列に変数を埋め込む場合は、フォーマット文字列を使用すると便利です。

name = "John"
age = 30
print(f"My name is {name}, and I am {age} years old.")

実行結果:

My name is John, and I am 30 years old.

変数の型を調べる

変数の型を調べる場合は、type関数を使用します。

name = "John"
age = 30
print(type(name))
print(type(age))

実行結果:

<class 'str'>
<class 'int'>

まとめ

print関数は、Pythonにおいてデータをコンソールに出力するために使用されます。

文字列に変数を埋め込む場合は、フォーマット文字列を使用すると便利です。

flushパラメータをTrueにすることで、プログラムの実行中にコンソールに進捗を表示することができます。