Pythonの書

end引数でprintの出力を変える!

さて、今回はprint関数について少し詳しい使い方、end引数を見ていきましょう。

 

定義 厳密に言うと?(・∀・)??

まずPython3のprintの定義は次のようになっています。

 

print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)

 

ちょっとわかりづらいですね。説明していきます。

 

 

*objectsは並べて表示したいオブジェクト達です。

 

値を格納した変数なんかをコンマ区切りで与えることで、それらが持つ値を並べて出力してくれます。

 

 

sep=’ ‘は前回少しお話ししましたが、オブジェクトを並べて出力する際にオブジェクト間に出力する文字を表しています。

 

少しわかりづらいですが、シングルクォーテーション( ‘ )の間に半角スペースが1文字分入っています。

 

 

end=’\n’print関数の一番最後に出力する文字を表しています。\nは”改行する”というエスケープシーケンス(特殊文字)ですね。

 

C言語ではよく使うのでC言語経験者にとってはおなじみではないかと思います。

 

 

file=sys.stdoutは出力先の設定を表しています。

 

sys.stdoutはおそらく標準出力のことで、ターミナルへの出力を示していると思われます。

 

詳しくは標準ライブラリsysについて調べた時に説明しようと思います。

 

 

flush=FalseTrueにすることで出力後にバッファをフラッシュする(?)らしいのですが、よくわかりませんでした。そのうちわかったら説明します(多分)。(´д`;)

 

 

サンプルプログラム 実際やってみるのが1番!(`・ω・´)キリッ

今回はendについて試してみましょう。

 

end_test.py

copy

#!/usr/bin/env python
#cording:UTF-8

a = 1024
b = "spam"
c = [ 1 , 1 , 2 , 3 , 5 , 8 ]
print( a )
print( b )
print( c )

 

とプログラムすると、

 

console

copy

1024
spam
[1, 1, 2, 3, 5, 8]

 

と出力されます。

 

ちゃんと1つのprint出力ごとに改行されていますね。

 

 

ではendを変更してみましょう。

 

end_changed.py

copy

#!/usr/bin/env python
#cording:UTF-8

a = 1024
b = "spam"
c = [ 1 , 1 , 2 , 3 , 5 , 8 ]
print( a, end = "" )
print( b, end = "" )
print( c, end = "" )

 

のようにprintに引数end = “”を追加しました。

 

すると、

 

console

copy

1024spam[1, 1, 2, 3, 5, 8]

 

と出力されました。

 

1つの出力ごとにスペース、改行なしと指定したので3つのオブジェクトが連続して出力されていますね。

 

 

元のendにはエスケープシーケンスである\nが指定されていました。

 

他のエスケープシーケンスを試してみましょう。

end_esc.py

copy

#!/usr/bin/env python
#cording:UTF-8

b = "spam"
print( b, end = "\b\bice" )

 

としてみると、

 

console

copy

spice

 

と出力されました。

 

\b“はバックスペース(直前の1文字を消す)[/subenehance]というエスケープシーケンスで、2つの”\b“を指定した後、”ice“の文字を追加で出力しました。

 

このようにendを変更して指定すれば、出力する内容を多少変更して自分好みに整えることができますね。

 

 

では今回はここまでです。

 

ではまた~。(*・ω・)ノ

カテゴリー:,
%d人のブロガーが「いいね」をつけました。