回答:
Python2ではprint
、ステートメントを導入するキーワードでした:
print "Hi"
Python3ではprint
、次の関数を呼び出すことができます:
print ("Hi")
どちらのバージョンでも、%
は、左側に文字列、右側に値または値のタプル、またはマッピングオブジェクト(などdict
)を必要とする演算子です。
したがって、行は次のようになります。
print("a=%d,b=%d" % (f(x,n),g(x,n)))
また、Python3以降の推奨事項は、-style {}
フォーマットの代わりに-style フォーマットを使用すること%
です。
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
Python 3.6では、さらに別の文字列フォーマットのパラダイム、f-stringsが導入されています。
print(f'a={f(x,n):d}, b={g(x,n):d}')
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
この例は、printfスタイルの修飾子を使用しながら、キーワードを使用する方法を示しています。
最も推奨される方法は、format
メソッドを使用することです。詳細はこちら
a, b = 1, 2
print("a={0},b={1}".format(a, b))
O'ReillyのPython Cookbookの単純なprintf()関数。
import sys
def printf(format, *args):
sys.stdout.write(format % args)
出力例:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
PRINT
そしてFORMAT
…?60年以上前のFORTRANの時代に戻る:)
Python 3.6では、インライン補間用のf文字列が導入されました。さらに良いのは、構文を拡張して、内挿付きの書式指定子も許可することです。私がこれをググっている間私が取り組んでいた何か(そしてこの古い質問に出くわしました!):
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
PEP 498に詳細があります。そして...それは他の言語のフォーマット指定子で私の不満をソートしました-それ自体が式であることができる指定子を可能にします!わーい!参照:フォーマット指定子。
括弧の%
外にあるため、呼び出しの結果にprint(...)
変数を挿入しようとしています。が戻るので、これは機能しません。また、この時間までにテンプレートをすでに印刷していて、タイムトラベルが私たちが住む宇宙の法則によって禁止されているという小さな問題もあります。print
print(...)
None
印刷する前に文字列を作成できるように、%
とそのオペランドを含めて、印刷するすべてのものを呼び出し内に置く必要がありますprint(...)
。
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
明確にするために、いくつかの余分なスペースを追加しました(ただし、それらは必要ではなく、一般的には良いスタイルとは見なされていません)。
%
print
ステートメントとは関係なく、常に文字列演算子でした。たとえば、で文字列を作成し、でs="a=%d,b=%d"%(f(x,n),g(x,n))
その文字列を印刷できますprint s
。