2013-02-07 7 views
24

最終的に私の2.xコードで%から.format()文字列フォーマット演算子に切り替えました。これにより、将来的に3.xへの移行が容易になりました。 %形式の書式設定がPy3に残っているだけでなく、標準ライブラリコードで広く使用されていることがわかりました。 '(%s)' % variableを書くことは少し短く、おそらく理解するのが'({})'.format(variable)よりも簡単なので論理的です。しかし、私はまだ疑いがあります。コード内で両方のアプローチを使用するのは適切ですか(pythonic?)? ありがとうございます。Python 3:%sと.format()を使用

+0

'% 'の書式設定は少し速いです。しかし、文字列の書式設定が大事な場合は、おそらく他の重要な懸案事項があります。 –

答えて

24

Python 3.2のドキュメントでは、%が最終的に消えてしまうという。 str.format()以来

http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting

Pythonコードの多くは、まだ% 演算子を使用して、非常に新しいです。ただし、この古い形式の書式は最終的に となり、str.format()は通常 となります。

しかし@regilero saysとして、文は、それが実際にはそうではないのです示唆かもしれない、3.3からなくなっています。同じことを示唆するいくつかの会話hereがあります。 Python 3.4 the paragraph 7.1.1のよう

読み取り:

%演算子は、文字列の書式設定のために使用することができます。それは 右の引数に適用される になるsprintf()スタイルの書式文字列のように左の引数を と解釈し、 この書式設定操作の結果の文字列を返します。

も参照してくださいPython 3.4 4.7.2 printf-style String Formatting.

+0

返信いただきありがとうございます、Vlad。確かに彼らはドキュメントでは、3.xの標準ライブラリでさえも '%'のような書式があふれていると言います。( '%'から取り除くという兆候はあまりないようですが、 '.format()'に固執しています:) –

+3

この文は、Python 3.3の文書では削除されていますが、それはまだ3.2にあります。http://docs.python.org/3.2/tutorial/inputoutput.html#old-string -formatting – regilero

+0

これはすばらしいニュースです! – Jon

-2

"%s" は "}、{" 今、あなたが文字列に変数を追加したい場所を%sの{}でそれを置き換える追加のinsted。

def main(): 
    n="Python 3.+" 
    l="looks nice" 
    f="does not look practical." 


    print("This seems to be the new way {}".format(n)\ 
     + "will be working, rather than the ' % ',{} but {}".format(l,f)) 



main() 

#In comparison to just injecting the variable 

出力無視のPython 3 + 『 が作業するのではなく、「%が;,『』素敵に見える「これは新しい方法をしているようで、』彼らは、説明上の理由からです引用符が

"実用的に見えません" "

+5

この答えにいくつかの説明を追加してください。 – Andrei

関連する問題