4

Python で変数を宣言すると、オブジェクトが参照されます。この場合、私のオブジェクトは文字列「test」です。これを「ing123」と連結すると、変数 a は文字列オブジェクト「testing123」を指すようになります。ただし、「testing123」の参照カウントは増加しません。なぜこれが起こるのですか?私は、Python は単に既存の 'testing123' 文字列オブジェクトを参照するだけだと考えていました。この場合、getrefcount が認識しない別のオブジェクトを作成しているように見えます。私の質問は....なぜこれが起こるのですか?getrefcount の 2 回目の呼び出しで 4 ではなく 5 が返されることを期待していました。

from sys import getrefcount

b = 'testing123'
print getrefcount('testing123')
a = 'test'
a += 'ing123'
print getrefcount('testing123')
print a

プリント...

4
4
testing123
4

2 に答える 2

3

intern必要な動作を取得するための文字列:

>>> b = intern('testing123')
>>> getrefcount(b)
2
>>> a = 'test'
>>> a = intern(a+'ing123')
>>> getrefcount(b)
3
>>> a is b
True
于 2013-05-15T19:12:30.077 に答える
-4

これを行うことはお勧めしません。

これには辞書を使用してください。より安全です。

これを試して

dict = { 'testing123' : 4 }
a = 'test'
a += 'ing123'
print dict[a]
于 2013-05-15T19:13:00.327 に答える