2016-11-18 3 views
3

古いコードを復活させ、Python7と3の標準に一致するようにリファクタリングしようとしました。%sの書式設定は、書式設定の前に2つの文字列を結合する際に+演算子よりも先に行われます。

多くの文字列演算では、"Something was %s in here" % "merged"という構文が使用されていました。

だから私は、.format("merged")のためにこれをスワップアウトするプロセスを開始したこの行がポップアップされるまで素晴らしい仕事:今、私はこれを徹底的に見て考えて、中にそれを変換し

cmd = 'cat %s[0-9] | compress.sh - | ' % filename[:-2] + cmd 

cmd = 'cat {}[0-9] | compress.sh - | '.format(filename[:-2] + cmd) 

コマンドラインが最後に作成されたのを見て、最後の|は実際には何の警告標識も引き起こさなかった。

しかし、頭の多くは傷やデバッグが後で私が見つけた正しい変換する必要があります:

cmd = 'cat {}[0-9] | compress.sh - | {}'.format(filename[:-2], cmd) 

私はあなたがおそらくここ"%s" % ("x",) + cmdを行う必要があることを認識してんだけど、これはコード少なかったことはありません私は残された。

私は同僚や友人に尋ねましたが、彼らはすべて同じものを想定していました。"数値演算子が文字列を結合する関数演算子の前にあると思います"

明らか場合 はないと私は思ったんだけど、"%s" % "x"+ "y"前に行く理由がある


技術的に私には、が追加されました。操作(純粋に数学的にはここで賢明に言えば)は、関数呼び出しの前に行くべきですか?

なぜPython2は、文字列にマージする機能の追加操作を秒針操作として扱うのですか?

答えて

5

%文字列書式演算子は、%剰余演算子または係数演算子で優先順位を共有するため、加算演算子+よりも厳密にバインドされています。すべての演算子を優先順に表示here

+3

今日、私は学んだ! OPではありませんが、とにかく感謝しています:-) – Gormador

+1

あなたが大声でそれを聞くときに完全に意味をなす。リンクは素晴らしいですが、多くの理由で便利になるでしょう。ありがとうございました! – Torxed

関連する問題