Python string biçimlendirme: % vs .format
Python 2.6 % mevcut operatöründen biraz farklı bir sözdizimi ile str.format() yöntem tanıttı. Hangisi daha iyi ve hangi durumlar için?
Aşağıdaki her yöntemi kullanır ve aynı sonuç, ne fark eder ki ben?
#!/usr/bin/python sub1 = "python string!" sub2 = "an arg" a = "i am a %s" % sub1 b = "i am a {0}".format(sub1) c = "with %(kwarg)s!" % {'kwarg':sub2} d = "with {kwarg}!".format(kwarg=sub2) print a # "i am a python string!" print b # "i am a python string!" print c # "with an arg!" print d # "with an arg!"Ayrıca ne zaman dize biçimlendirme Python oluşuyor mu? Eğer günlük seviyem YÜKSEK olacaktır için ayarlı ise, örneğin, ben hala
%aşağıdaki işlemi gerçekleştirmek için büyük bir darbe alacak? Ve eğer, bunu önlemek için bir yol var mı?log.debug("some debug info: %s" % some_info)
CEVAP
... .format ilk sorunuza cevap vermek pek çok yönden daha gelişmiş görünüyor. % hakkında sinir bozucu bir şey ya da bir değişken ya da bir demet alabilir. Aşağıdaki her zaman işe yarayacağını düşünebilirsiniz
"hi there %s" % name
eğer name olursa yine de, (1, 2, 3), TypeError bir durum oluşturur. Her zaman baskı güvence altına almak için, yapmanız gereken istediğiniz
"hi there %s" % (name,) # supply the single argument as a single-item tuple
sadece çirkin olan. .format bu konular yok. Verdiğin ikinci örnekte de, .format örnek çok daha temiz görünüyor.
Neden bunu kullanmak istiyorsunuz?
- haberi (bunu okumadan önce bana)
- sahip Python 2.5 ile uyumlu olacak ÅŸekilde
İkinci sorunun cevabı, string biçimlendirme dize biçimlendirme ifadesi değerlendirildiğinde başka bir operasyon aynı anda olur. Ve Python olmaktan tembel bir dil, ifadeleri değerlendirir çağırmadan önce çalışır, yani senin log.debug örneğin, ifade "some debug info: %s"%some_infoilk değerlendirme için, örneğin "some debug info: roflcopters are active", bu dize olacak geçti log.debug().

Python string biçimlendirme için birde...
JavaScript, basit bir beÅŸgen kullanmak...
Python katılın, neden dize.liste yerin...
Python string dönüştürme tamsayı?...
Hex string Python int dönüştürmek...