f-Strings tersedia dari Python 3.6 dan sangat berguna untuk memformat string:
>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'
Membaca lebih banyak tentang mereka di Python 3 ini f-String: Sebuah Peningkatan String Format Sintaks (Guide) . Saya menemukan pola yang menarik:
Perhatikan bahwa menggunakan tiga kawat gigi akan menghasilkan hanya ada satu kawat gigi dalam string Anda:
>>> f"{{{74}}}" '{74}'
Namun, Anda bisa mendapatkan lebih banyak kawat gigi untuk ditampilkan jika Anda menggunakan lebih dari tiga kawat gigi:
>>> f"{{{{74}}}}" '{{74}}'
Dan inilah tepatnya masalahnya:
>>> f'{74}'
'74'
>>> f'{{74}}'
'{74}'
Sekarang jika kita beralih dari dua {
menjadi tiga, hasilnya sama:
>>> f'{{{74}}}'
'{74}' # same as f'{{74}}' !
Jadi kita membutuhkan hingga 4! ( {{{{
) untuk mendapatkan dua kawat gigi sebagai output:
>>> f'{{{{74}}}}'
'{{74}}'
Kenapa ini? Apa yang terjadi dengan dua kawat gigi agar Python memerlukan satu lagi sejak saat itu?
python
python-3.x
string
formatting
f-string
fedorqui 'SO berhenti merugikan'
sumber
sumber
f"{{2+2}}"
danf"{{{2+2}}}"
, yang mana'{2+2}'
dan'{4}'
masingf'{2+2}'
mengembalikan 4,f'{{2+2}}'
mengembalikan 2 + 2,f'{{{2+2}}}'
➝ {4},f'{{{{2+2}}}}'
➝ {{2 + 2}} dan seterusnya. Masuk akal tetapi sedikit membingungkan pada pandangan pertama.f'{74}'
sama denganf'74'
.str.format
juga bagus."{74}".format(...)
akan membutuhkan urutan dengan setidaknya 74 elemen.Jawaban:
Kawat gigi ganda keluar dari kawat gigi, sehingga tidak terjadi interpolasi:
{{
➝{
, dan}}
➝}
. Dan74
tetap string yang tidak berubah'74'
,.Dengan kawat gigi rangkap tiga, kawat gigi rangkap luar itu diloloskan, sama seperti di atas. Kawat gigi bagian dalam, di sisi lain, menyebabkan interpolasi string nilai yang teratur
74
.Artinya, string
f'{{{74}}}'
sama denganf'{{ {74} }}'
, tetapi tanpa spasi (atau, setara, dengan'{' + f'{74}' + '}'
).Anda dapat melihat perbedaan ketika mengganti konstanta numerik dengan variabel:
sumber