Yani aynı davranışa sahip pek emin bir CPython şey var diğer uygulamalarla.'{0}'. Biçim()() ve '{}' str daha hızlıdır. Biçim() ipython% sürümüyle gelen timeit kullanarak ve aksi takdirde saf Python kullanarak
Ancak '{0}'.format()
str()
ve '{}'.format()
'dan daha hızlıdır. Ben Python 3.5.2 sonuçları gönderme yapıyorum ama, ben Python 2.7.12ile denedim ve trend aynıdır. str(object)
tarafından çağrılır object.__str__(self)
? @StefanPochmann ve @Leon yorumlarda belirtildiği gibive yerleşik işlevleri
format()
veprint()
üzerinde docs itibarenbir nesnenin “gayri” veya güzel yazdırılabilir dize temsilini hesaplamak için.%timeit q=['{0}'.format(i) for i in range(100, 100000, 100)] %timeit q=[str(i) for i in range(100, 100000, 100)] %timeit q=['{}'.format(i) for i in range(100, 100000, 100)] 1000 loops, best of 3: 231 µs per loop 1000 loops, best of 3: 298 µs per loop 1000 loops, best of 3: 434 µs per loop
Yani,
str()
veformat()
çağrı aynıobject.__str__(self)
yöntem, ancak hızda o fark nereden geliyor
GÜNCELLEME , farklı sonuçlar elde.
$ python3 -m timeit "['{0}'.format(i) for i in range(100, 100000, 100)]"
1000 loops, best of 3: 441 usec per loop
$ python3 -m timeit "[str(i) for i in range(100, 100000, 100)]"
1000 loops, best of 3: 297 usec per loop
$ python3 -m timeit "['{}'.format(i) for i in range(100, 100000, 100)]"
1000 loops, best of 3: 420 usec per loop
yüzden ipython garip bir şey yapıyor gibi görünüyor ...
YENİ SORU: Ne tercih edilir yolu ben sonuçlarıdır çünkü onlar haklılar, python -m timeit "..."
ile çalıştırmak için çalıştı ve Bir nesneyi str
hızına dönüştürmek için?
Daha hızlı olmak için, 'i_str __()' yi doğrudan kullanmayı deneyebilirsiniz. Gerçi str gerçekten uygun bir yol. Senin için yeterince hızlı değil mi? –