Yanıtlar:
Python2'de, print
bir ifadeyi tanıtan bir anahtar kelimeydi :
print "Hi"
Python3'te print
çağrılabilen bir işlevdir:
print ("Hi")
Her iki versiyonda da, %
sol tarafta bir dize ve sağ tarafta bir değer veya değerler demeti veya bir eşleme nesnesi (benzeri dict
) gerektiren bir operatördür .
Öyleyse, çizginiz şöyle görünmeli:
print("a=%d,b=%d" % (f(x,n),g(x,n)))
Ayrıca, Python3 ve daha yeni sürümler için öneri, -stilli {}
biçimlendirme yerine -stilli biçimlendirmeyi kullanmaktır %
:
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
Python 3.6, başka bir dize biçimlendirme paradigması sunar: f dizeleri .
print(f'a={f(x,n):d}, b={g(x,n):d}')
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
Bu örnek, printf tarzı değiştiricileri nasıl kullanabileceğinizi ve yine de anahtar kelimeleri nasıl kullanabileceğinizi gösterir .
Bunu yapmanın en çok tavsiye edilen yolu format
yöntemi kullanmaktır . Buradan daha fazlasını okuyun
a, b = 1, 2
print("a={0},b={1}".format(a, b))
O'Reilly'nin Python Yemek Kitabından basit printf () işlevi .
import sys
def printf(format, *args):
sys.stdout.write(format % args)
Örnek çıktı:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
PRINT
ve FORMAT
...? Zamanda geriye 60+ yıldan FORTRAN günlerine :)
Python 3.6, satır içi enterpolasyon için f dizelerini tanıttı. Daha da hoş olan, sözdizimini enterpolasyonlu format belirticilere de izin verecek şekilde genişletmesidir. Bunu Google'da araştırırken (ve bu eski soruyla karşılaşırken!) Üzerinde çalıştığım bir şey:
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
KEP 498 detaylara sahiptir. Ve ... evcil hayvanımı diğer dillerdeki format belirleyicileriyle sıraladı - kendilerinin de ifade olabileceği belirteçlere izin veriyor! Yaşasın! Bakınız: Biçim Tanımlayıcıları .
Basit Örnek:
print("foo %d, bar %d" % (1,2))
Daha basit olanı.
def printf(format, *values):
print(format % values )
Sonra:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
Senin Çünkü %
dışında print(...)
parantez, sen içine Değişken eklemek için çalışıyoruz sonucu sizin bir print
çağrı. print(...)
geri dönüyor None
, bu yüzden bu işe yaramayacak ve ayrıca, bu zamana kadar şablonunuzu zaten yazdırmış olmanız ve yaşadığımız evrenin yasaları tarafından yasaklanan zaman yolculuğuna dair küçük bir mesele var.
İstediğiniz her şey dahil yazdırmak %
olmak ve işlenen, ihtiyaçlarını içine senin print(...)
yazdırıldığında önce dize inşa edilebilir böylece, çağrı.
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
Daha net hale getirmek için fazladan birkaç boşluk ekledim (ancak bunlar gerekli değil ve genellikle iyi bir stil olarak görülmüyor).
Python'da olmayan diğer kelimeler printf ... Şaşırdım! En iyi kod
def printf(format, *args):
sys.stdout.write(format % args)
Bu form nedeniyle \ n yazdırılamaz. Diğerleri hayır. Bu yüzden baskı kötü bir operatördür. Ayrıca özel formda argümanlar yazmanız gerekir. Yukarıdaki fonksiyonun herhangi bir dezavantajı yoktur. Bu, standart bir printf işlevi biçimidir.
%
her zaman bir dize operatörü olmuştur,print
ifadeyle ilgili değildir . Örneğin, ile bir dizi oluşturabilirs="a=%d,b=%d"%(f(x,n),g(x,n))
ve ardından bu dizeyi ile yazdırabilirsinizprint s
.