这两段代码的效果是一样的:
from string import Template
template = Template('hi, ${name}')
msg = template.substitute(name=u'张三')
print msg
与
msg = u'hi, {name}'
msg = msg.format(name=u'张三')
print msg
我的问题是, string.Template与str.format谁的历史更久? 为什么会出现功能一样的库呢? 是不是一个是另一个的替代品呢?
Subjek yang disebut
%
dalam ulasan saya, dan terdapat petikan ini dalamstr.format()
dokumen rasmi (str.format - python2):Mungkin bermaksud:
Jadi soalan asal menyebut sama ada
dan bukannyaTemplate
danformat
merupakan pengganti.format
%
Memandangkan pegawai itu berkata demikian, saya mencadangkan bahawa apabila ia melibatkan operasi pemformatan rentetan pada masa hadapan, anda harus menggunakan.
ialah kelas dalam modulformat
%
Jawapan asal:dan
boleh diubah suai:Template
ialah fungsi terbina dalam dalam modulstring
Ini ialah perbezaan asas antara kedua-duanya.format
Memandangkan__buildin__
ialah kelas, anda boleh mewarisinya dan menulis semula kandungan mengikut keperluan anda sendiri Contohnya, pembatas lalai$
Hasil keluaran:Dengan cara yang sama, kita juga boleh melakukan lebih banyak perkara yang kita mahu Ini adalah "penyesuaian peribadi" yang boleh dicapai sebagai kelas.
Selain itu, mengenai
, julat aplikasinya sebenarnya sangat luas Selain daripada apa yang anda nyatakan dalam contoh anda, kami juga biasanya menggunakan yang berikut:format
dan penjajaran pelapik, ketepatan dan juga penukaran asas yang sangat penting:Jadi arahan aplikasi
danadalah berbeza sama sekali.
Template
Mengapa anda tidak terkejut mengapa fungsi diisih dan list.sort() wujud pada masa yang sama?
Fungsi dengan fungsi yang serupa secara amnya disasarkan pada senario aplikasi khas Contohnya, soreted mempunyai nilai pulangan dan mengisih secara langsung menukar objek.
Untuk string.Template dan str.format, string.Template, seperti yang dinyatakan dalam namanya, sesuai untuk menentukan templat dan boleh digunakan kemudian, sebagai contoh, jika anda mentakrifkan templat dalam fungsi atau pakej, ia boleh digunakan pada bila-bila masa Mudah untuk dihubungi tanpa perlu mengetahui butirannya. str.format() biasanya digunakan untuk ungkapan satu baris dan lebih fleksibel untuk digunakan.