- 変数の内容を確認したい
- 簡易的にデバッグを行いたい
- print 関数の高度な使い方を知りたい
print() 関数を使うと、文字列などをコンソール上に表示できます。
実はその他にもちょっとしたテクニックなどもあるので、基礎はもちろん少しアドバンス的な使い方まで網羅して解説していきます。
print() 関数の基本的な使い方と概要
print() 関数の基本的な使い方
print() 関数の引数(カッコ内)に、表示させたいものを入れて実行するだけです。
例えば “Hello, World!” という文字列を表示させたい場合は、以下のようなコードになります。
# コンソールに Hello, World! を表示させる
print("Hello, World!")
“Hello, World!” は文字列型ですが、それ以外の型であっても同様に使うことができます。
# 数値型
print(0)
# リスト型
print([1, 2, 3, 4, 5])
# 辞書型
print({"key_1": "value_1", "key_2": "value_2"})
変数の内容を出力する
変数の内容を出力させたい場合にも、print() 関数の引数として変数を渡せば OK です。
target = "変数に格納した値"
print(target)
上記を実行すると、「変数に格納した値」という文字列が出力されます。
DataFrame の内容を出力する
Pandas の DataFrame も print() 関数で表示できます。
# データフレーム型
print(df)
とはいえ DataFrame はデータ量が膨大になりがち。
print() 関数を使う場合はあくまで簡易的なデバッグ用途が多いと思います。
そのため、DataFrame の先頭のデータだけ確認するなら head() メソッドなどを、全件確認するなら to_csv() メソッドなどで CSV 出力して確認するほうが便利です。
print() 関数の用途
例えば、print() 関数は以下の用途で使われます。
- 軽微なデバッグ
- ログ出力
少し詳しく解説します。
軽微なデバッグ
ちょっと変数の中身を確認したい場合などには、print() 関数で十分な場合が多いです。
test_variable = "ある文字列を入れる"
# 色々な処理を行う
# ...
# 変数の中身がよくわからなくなる
# 変数の中身を確かめるために print() 関数を実行
print(test_variable)
print() 関数を一行だけ挿入するだけなので、簡単なデバッグであれば十分だと思います。
また、ループの挙動を見たい場合にも有効です。
for i in range(10):
print(i)
一方で、よりたくさんの変数の内容を追って行きたい場合などはVisualStudioCode などのデバッグ機能を使うほうが簡単です。
大量の変数を print() 関数で確認しようとすると、デバッグのために追加するコードが膨大になります。
print() を書くのも面倒・元の状態に戻すのも一苦労なので、IDE の機能を利用したほうが得策です。
ログ出力
ユーザーに対してメッセージを表示するだけなら、ログとしても使えます。
# ある処理を実行する
some_action()
print("some_action の実行に成功しました。")
ただし、一般的なログ出力と違って次のようなことはできません。
- Error, Warning, Info などのログレベルの区別ができない
- ログファイル等に出力ができない
上記のような理由で、本格的にログ出力をしたいなら logger ライブラリを使ってログ出力したほうが良いと思います。
一歩進んだ print() 関数の使い方
これまでご説明してきたとおり、基本的な使い方は print() 関数の引数に値を渡すだけです。
ここからは少しアドバンス的な print() 関数の使い方をご紹介します。
変数と文字列を混在させて出力する
基本的な方法では、「文字列だけ」や「変数だけ」の出力しかできませんでした。
一方で、以下のテクニックを使うと文字列と変数を混在させて出力できます。
- fストリングスを使った方法
- format() メソッドを使った方法
- パーセント記号を使った方法
最近の Python コードでは fストリングスを使ったものが多いので、最初はこれだけマスターすれば大丈夫だと思います。
②と③の方法は少し古いコードでよく使われていたものですが、念のため解説します。
fストリングスを使った方法
f""
と書くことで、文字列と変数を混在させた書き方ができます。
具体例を見てみましょう。
my_name = "John Lennon"
print(f"My name is {my_name}")
{}
の中に変数名を書くことで、変数が文字列として表現されることになります。
つまり、上記では “My name is John Lennon” となるわけです。
このような書き方は先頭にf
を書かないと使えないので注意が必要です。
もちろん二つ以上の変数を混在させることもできます。
もう一つ例を挙げてみましょう。
lang_1 = "Python"
lang_2 = "JavaScript"
print(f"I have learned {lang_1} and {lang_2}.")
この場合は、”I have learned Python and JavaScript.” が出力結果となります。
format() メソッドを使った方法
二つ目の方法として、format() メソッドを使う方法があります。
具体例を挙げてみましょう。
my_name = "John Lennon"
print("My name is {}".format(my_name))
空の{}
が出てくるのでちょっと気持ち悪いですが、これで “My name is John Lennon” と表示できます。
もし上記で気持ち悪い場合には、{}
の中にインデックス番号を指定することもできます。
my_name = "John Lennon"
print("My name is {0}".format(my_name))
こうすると、同じ文字列を使い回すこともできます。
name = "John Lennon"
print("My name is {0}, and your name is {0} too.".format(name))
インデックス番号は、format() メソッドに渡した引数の順番番号になります。
つまり、二つ以上の引数を渡す場合には次のようになります。
my_name = "John Lennon"
your_name = "Paul McCartney"
print("My name is {0}, and your name is {1} too.".format(my_name, your_name))
パーセント記号を使った方法
少し古い Python スクリプトで見るのが、パーセント記号%
を使った方法です。
my_name = "John Lennon"
print(f"My name is %s" % my_name)
上記では文字列型を渡すために%sとしましたが、他の型を渡す場合には適宜別の記号を使うことになります。
- %d:数値(符号付き 10 進整数)
- %f:浮動小数店(10 進浮動小数点数)
他の表記方法は、公式ドキュメントを参照してください。
» 参考:printf 形式の文字列書式化
標準的な print() 関数のオプション
print() 関数の引数には、いくつかバリエーションがあります。
末尾を改行以外にする方法
普通に print() 関数を実行すると、最後に改行がされます。
print("start")
print("end")
つまり、上記を実行すると、start と end の間には改行がされて次のように出力されます。
start # print() の最後に当たる部分が改行される
end
改行の代わりに別の文字列を挿入する場合、end
引数を渡すことで対応できます。
print("start", end="&")
print("end")
上記では改行コードの代わりに&を指定したため、以下のような出力結果になります。
start&end
複数の値を一つの print() 関数で出力する
print() 関数の引数には、複数の値を渡すことができます。
print(0, "python", [1, 2, 3])
複数の値を渡す場合には、上記のようにカンマ区切りにしてください。
実行結果は以下になります。
0 python [1, 2, 3]
つまり、出力したい値の数だけ print() を書く必要はなく、複数の要素をカンマ区切りで渡せばすべてプリントされるというわけです。
区切り文字を変更する方法
複数の値をプリントする方法では、各値間には半角スペースが挿入されます。
0 python [1, 2, 3]
半角スペースの代わりに別の文字列で区切る場合には、sep を指定してください。
print(0, "python", [1, 2, 3], sep="/")
/を区切り文字として指定しました。
出力結果は以下のようになります。
0/python/[1, 2, 3]
区切り文字の代わりに改行させる場合
sep引数として、改行コード\n
を指定します。
print(0, "python", [1, 2, 3], sep="\n")
結果は、以下のように改行されて出力されます。
0
python
[1, 2, 3]
コメント