私はPython 2でこれを行います:
"(%d goals, $%d)" % (self.goals, self.penalties)
これの Python 3 バージョンは何ですか?
オンラインで例を検索しようとしましたが、Python 2 バージョンを取得し続けました。
私はPython 2でこれを行います:
"(%d goals, $%d)" % (self.goals, self.penalties)
これの Python 3 バージョンは何ですか?
オンラインで例を検索しようとしましたが、Python 2 バージョンを取得し続けました。
「新しい」形式の構文に関するドキュメントは次のとおりです。例は次のとおりです。
"({:d} goals, ${:d})".format(self.goals, self.penalties)
goals
との両方penalties
が整数の場合 (つまり、デフォルトの形式で問題ありません)、次のように短縮できます。
"({} goals, ${})".format(self.goals, self.penalties)
また、パラメーターは のフィールドであるためself
、1 つの引数を 2 回使用する方法もあります (@Burhan Khalid がコメントで指摘したように)。
"({0.goals} goals, ${0.penalties})".format(self)
説明:
{}
デフォルト形式の次の位置引数のみを意味します。{0}
0
デフォルト形式の index を持つ引数を意味します。{:d}
10 進整数形式の次の位置引数です。{0:d}
0
10 進整数形式の index を持つ引数です。引数を選択するときにできることは他にもたくさんあります (位置引数の代わりに名前付き引数を使用する、フィールドにアクセスするなど) と、多くの形式オプション (数字をパディングする、桁区切り記号を使用する、符号を表示するかどうかなど)。その他の例:
"({goals} goals, ${penalties})".format(goals=2, penalties=4)
"({goals} goals, ${penalties})".format(**self.__dict__)
"first goal: {0.goal_list[0]}".format(self)
"second goal: {.goal_list[1]}".format(self)
"conversion rate: {:.2f}".format(self.goals / self.shots) # '0.20'
"conversion rate: {:.2%}".format(self.goals / self.shots) # '20.45%'
"conversion rate: {:.0%}".format(self.goals / self.shots) # '20%'
"self: {!s}".format(self) # 'Player: Bob'
"self: {!r}".format(self) # '<__main__.Player instance at 0x00BF7260>'
"games: {:>3}".format(player1.games) # 'games: 123'
"games: {:>3}".format(player2.games) # 'games: 4'
"games: {:0>3}".format(player2.games) # 'games: 004'
注:他の人が指摘したように、新しい形式は前者に取って代わるものではなく、どちらも Python 3 と Python 2 の新しいバージョンの両方で利用できます。好みの問題だと言う人もいるかもしれませんが、新しいコードは古いコードよりも表現力があり、新しいコードを書くときはいつでも使用する必要があります (もちろん、古い環境をターゲットにしている場合を除きます)。
Python 3.6 は、 PEP 498を使用した省略形のリテラル文字列補間をサポートするようになりました。あなたのユースケースでは、新しい構文は単純です:
f"({self.goals} goals, ${self.penalties})"
これは以前の.format
標準に似ていますが、次のようなことを簡単に行うことができます:
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal('12.34567')
>>> f'result: {value:{width}.{precision}}'
'result: 12.35'
その行は Python 3 でそのまま機能します。
>>> sys.version
'3.2 (r32:88445, Oct 20 2012, 14:09:29) \n[GCC 4.5.2]'
>>> "(%d goals, $%d)" % (self.goals, self.penalties)
'(1 goals, $2)'