2016-04-04 11 views
-1

は、時々私は、次のような使用を参照してください。 Pythonフォーマッタの `%`と `、`の違いは何ですか?

a = "foo" 
b = "bar" 
print "%s, %s" %(a, b) 

、時にはなどの

print "%s, %s", (a, b) 

は舞台裏で違いはありますか?

+1

私は。 '{0}'を好むフォーマット(a) – rocksteady

+4

2番目の例は最初の例と同じことをしていないので、そこに1つの明白な違いがあります。 'logging'ライブラリやデータベースへのアクセスなど何か他のものはありませんか? –

+0

2番目のコードはPythonフォーマッタではありません。最初は文字列フォーマッタで、新しい文字列をprint関数のパラメータとして構築します。 (a、b)は関数pの第2パラメータリント – qvpham

答えて

2

彼らは異なるものを印刷:

>>> print "%s, %s" %(a, b) 
foo, bar 
>>> print "%s, %s", (a, b) 
%s, %s ('foo', 'bar') 

最初のものは、文字列"%s, %s"を使用し、フォーマットのプレースホルダに値abを挿入するために文字列フォーマット演算子%を使用しています。その結果の文字列は、printステートメントを使用して印刷されます。

2つ目はprintステートメントに2文字を渡します。文字列"%s, %s"とタプル(a, b)です。これらは両方とも独立して印刷されるため、ここでは文字列の書式設定は行われません。

0

代わりに.format()を使用することをお勧めします。

すなわち:プリント( '{} {}' などの形式(a、b)は

は多くの問題の世話をするだけでなく、文字列、小数を気にすることない、

関連する問題