Jawaban:
Di Python2, printadalah kata kunci yang memperkenalkan pernyataan:
print "Hi"
Dalam Python3, printadalah fungsi yang dapat dipanggil:
print ("Hi")
Di kedua versi, %adalah operator yang membutuhkan string di sisi kiri dan nilai atau tupel nilai atau objek pemetaan (seperti dict) di sisi kanan.
Jadi, baris Anda seharusnya terlihat seperti ini:
print("a=%d,b=%d" % (f(x,n),g(x,n)))
Juga, rekomendasi untuk Python3 dan yang lebih baru adalah menggunakan {}pemformatan -style alih-alih pemformatan -style %:
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
Python 3.6 memperkenalkan paradigma pemformatan string lain: f-string .
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))) mana contoh ini menunjukkan bagaimana Anda dapat menggunakan pengubah gaya printf dan masih menggunakan kata kunci.
Cara yang paling direkomendasikan untuk dilakukan adalah menggunakan formatmetode. Baca lebih lanjut di sini
a, b = 1, 2
print("a={0},b={1}".format(a, b))
Fungsi printf () sederhana dari Cookbook Python O'Reilly .
import sys
def printf(format, *args):
sys.stdout.write(format % args)
Contoh output:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
PRINTdan FORMAT...? Kembali ke masa 60+ tahun hingga hari-hari FORTRAN :)
Python 3.6 memperkenalkan f-string untuk interpolasi inline. Apa yang lebih bagus lagi adalah memperpanjang sintaks untuk juga memungkinkan penentu format dengan interpolasi. Sesuatu yang telah saya kerjakan ketika saya mencari di Google (dan menemukan pertanyaan lama ini!):
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
PEP 498 memiliki detailnya. Dan ... itu mengurutkan peeve peliharaan saya dengan penentu format dalam bahasa lain - memungkinkan penspesifikasi yang dapat berupa ekspresi! Yay! Lihat: Format Penentu .
Contoh sederhana:
print("foo %d, bar %d" % (1,2))
Yang lebih sederhana.
def printf(format, *values):
print(format % values )
Kemudian:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
Karena Anda %berada di luar print(...)tanda kurung, Anda mencoba memasukkan variabel Anda ke dalam hasilprint panggilan Anda . print(...)kembaliNone , jadi ini tidak akan berhasil, dan ada juga hal kecil dari Anda yang sudah mencetak template Anda saat ini dan perjalanan waktu dilarang oleh hukum alam semesta yang kita huni.
Seluruh hal yang ingin Anda cetak, termasuk %operan dan, perlu di dalamprint(...) panggilan Anda , sehingga string dapat dibangun sebelum dicetak.
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
Saya telah menambahkan beberapa ruang ekstra untuk membuatnya lebih jelas (meskipun mereka tidak perlu dan umumnya tidak dianggap gaya yang baik).
Dengan kata lain printf absen dalam python ... Saya terkejut! Kode terbaik adalah
def printf(format, *args):
sys.stdout.write(format % args)
Karena formulir ini memungkinkan untuk tidak mencetak \ n. Semua yang lain tidak. Itu sebabnya cetak adalah operator yang buruk. Dan Anda juga perlu menulis args dalam bentuk khusus. Tidak ada kerugian dalam fungsi di atas. Ini adalah bentuk fungsi printf standar yang biasa.
%selalu menjadi operator string, tidak terkait denganprintpernyataan itu. Anda dapat, misalnya, membuat string dengans="a=%d,b=%d"%(f(x,n),g(x,n)), lalu mencetak string itu denganprint s.