2

Python の学習から、% の 2 つの用途を発見しました。これはモジュロと呼ばれるものとして使用できます。つまり、左側の値と右側の値を除算し、余りを吐き出します。

もう 1 つの用途は、文字列フォーマッタです。'Hi there %s' % nameしたがって、 name は名前のリストである のようなことができます。

%%また、文字列フォーマットで表示されている場合は、リテラル%が入力されることを意味します。

これが私の質問です、私はこれを見つけました:

class FormatFormatStr(FormatObj):
    def __init__(self, fmt):
        self.fmt = fmt

    def tostr(self, x):
        if x is None: return 'None'
        return self.fmt%self.toval(x)

とはreturn self.fmt%self.toval(x)どういう意味ですか? toval は文字列を与えるので、モジュロにすることはできません。別のパーセント記号がないため、実際には文字列フォーマッタではありません。

また、これに関連して:

def csvformat_factory(format):
    format = copy.deepcopy(format)
    if isinstance(format, FormatFloat):
        format.scale = 1. # override scaling for storage
        format.fmt = '%r'
    return format

format.fmt = '%r'文字列 a la を挿入するという意味でのパーセントの意味は何repr()ですか? それとも、変数rが表すものを挿入するという意味ですか? rこの全体的なプログラムでは、再配列も指します。

みんな、ありがとう。これが理にかなっていることを願っています=)

4

5 に答える 5

4

文字列 % 演算子は、想像しているよりも単純です。左側に紐、右側に色々とかかります。左辺はリテラル文字列である必要はなく、変数または別の計算の結果でもかまいません。文字列になる式は、% の左側で有効です。

最初の例でself.fmtは、文字列です。このコンテキストで役立つようにするには、パーセント記号が含まれている必要があります。

2 番目の例でformat.fmtは、% の左側として役立つ文字列に設定されています。この場合、「%r」は、あなたが言ったように、値の repr() を文字列に挿入することを意味します。

于 2009-09-27T20:24:06.717 に答える
3

return self.fmt%self.toval(x)

self.fmtは文字列であり、その文字列にはおそらくパーセント記号のプレースホルダーが含まれています。

%rフォーマット文字列では似ていますが、文字列の を%s出力するrepr()ため、引用符やバックスラッシュなどが含まれます。

%は単なるメソッドである単なる演算子であり、他のメソッドと同様に、リテラル値または値を含む変数を渡すことができます。あなたの例では、フォーマット文字列を含む変数を使用しています。

于 2009-09-27T20:25:16.743 に答える
0
def tostr(self, x):
    if x is None: return 'None'
    return self.fmt%self.toval(x)

これ%は間違いなく文字列フォーマッタです。tostrメソッドをフォーマッタに渡します。たとえば"%s"、または"%r"何が起こるかを確認します

'%r'incsvformat_factoryも文字列フォーマッタ だと思います。ユーザーに何かを表示するための合理的な方法である を'%r'取ることを意味します。私はそれが他の場所で使用されているrepr()と想像します。format.fmtformat.fmt % somevalue

于 2009-09-27T20:24:28.557 に答える
0

コード: return self.fmt % self.toval(x)

あなたが疑ったように、%演算子の「文字列フォーマット」の使用です。

このクラスは、フォーマットを含む文字列であるハンドド フォーマットであり、tostr(x) が呼び出されると、文字列 % x が返されます。

これは % を直接使用するのと同じですが、後で使用するためにフォーマット文字列を保存するだけです。つまり、次のようにする代わりに:

"I want to print the number: %n" % 20

何が起こっているのですか:

format_str = "I want to print the number: %n"
x = 20
print format_str % x

これはまったく同じことです。

于 2009-09-27T20:25:16.480 に答える
0

% は、文字列の書式設定で複数の用途があります。%s、%d などで 1 回使用されます。

もう 1 つの用途は、「%d と %s を使用する文字列」を int-value と string-value から分離することです。

例えば

'string in which we use %d and %s' % (17, 'blue')

結果として

'string in which we use 17 and blue'

「%d と %s を使用する文字列」を変数に格納できます。

a = 'string in which we use %d and %s'

それから

a % (17, 'blue')

結果は

'string in which we use 17 and blue'

あなたの例では self.fmt%self.toval(x)

self.fmt は上記と同様で、self.toval(x) は (17, 'blue') です

于 2009-09-27T20:27:03.267 に答える