Python - f-string
Cts 02 Ağustos 2025F-String Kullanımı
F-String, bir dizenin (string ifadenin) seçilen kısımlarını biçimlendirmenize olanak tanır.
F-String, python 3.6'da tanıtıldı ve şu anda dizeleri biçimlendirmek için tercih edilen yöntemdir.
Python 3.6'dan önceformat()
yöntemini kullanmak zorundaydık. format()
yöntemi hala kullanılabilir, ancak f-string daha hızlıdır ve dizileri biçimlendirmek için tercih edilen yöntemdir. O nedenle format
yöntemini/metodunu anlatmayacağım.
Bir dizeyi f-string olarak belirtmek için, dize sabitinin önüne f
harfini eklemeniz yeterlidir, örneğin:
metin = f"Fiyat 4900 Türk Lirası"
print(metin)
Çıktı:
Fiyat 4900 Türk Lirası
Yer tutucular ve Değiştiriciler
Bir f-stringdeki değerleri biçimlendirmek için yer tutucular{}
ekleyin. Bir yer tutucu, değeri biçimlendirmek için kullanılır ve değişkenler, işlemler, fonksiyonlar ile değiştiriciler içerebilir.
Örneğin:
Fiyat değişkeni için bir yer tutucu ekleyin:
ücret = 5900
metin = f"Fiyat {ücret} Türk Lirası"
print(metin)
Çıktı:
Fiyat 5900 Türk Lirası
Yer tutucu, değeri biçimlendirmek için bir değiştirici de içerebilir.
Değiştirici, iki nokta üst üste (:
) ve ardından geçerli bir biçimlendirme türü eklenerek dahil edilir. Örneğin, .2f
ifadesi, 2 basamaklı ondalıklı sayı anlamına gelir.
Fiyatı 2 ondalık basamakla göster:
ücret = 59
metin = f"Fiyat {ücret:.2f} Türk Lirası"
print(metin)
Çıktı:
Fiyat 59.00 Türk Lirası
Bir değeri bir değişkende tutmadan doğrudan da biçimlendirebilirsiniz:
metin = f"Fiyat {95:.2f} Türk Lirası"
print(metin)
Çıktı:
Fiyat 59.00 Türk Lirası
F-String ile İşlemler Gerçekleştirmek
Yer tutucuların içinde Python işlemleri gerçekleştirebilirsiniz. Örneğin doğrudan matematiksel işlemler yapabilirsiniz:
metin = f"Fiyat {20 * 59} Türk Lirası"
print(metin)
Çıktı:
Fiyat 1180 Türk Lirası
Değişkenler üzerinde de matematik işlemleri gerçekleştirebilirsiniz:
ücret = 65
kdv = 0.25
metin = f"KDV'li fiyat {ücret * (1 + kdv)} Türk Lirası"
print(metin)
Çıktı:
KDV'li fiyat 81.25 Türk Lirası
Yer tutucuların içinde if...else
ifadeleri kullanabilirsiniz.
Fiyat 5000 'in üzerindeyse "Pahalı" değerini, aksi takdirde "Ucuz" değerini döndür:
ücret = 5000
metin = f"Bu ürün üçün fiyat oldukça {'Pahalı' if ücret > 3000 else 'Ucuz'}"
print(metin)
Çıktı:
Bu ürün üçün fiyat oldukça Pahalı
F-String içinde Fonksiyon Çalıştırmak
Yer tutucunun içindeki fonksiyon çalıştırabilirsiniz.
Bir değeri büyük harflere dönüştürmek için upper()
dizi (string) metodunu kullanın:
meyve = "Çilek"
metin = f"En sevdiğim meyve: {meyve.upper()}'tir."
print(metin)
Çıktı:
En sevdiğim meyve: ÇİLEK'tir.
F-String içinde kullanılan fonksiyon, dahili (yerleşik) bir Python metodu olmak zorunda değildir; kendi fonksiyonlarınızı da oluşturup kullanabilirsiniz.
Feet ölçü birimini metreye dönüştüren bir fonksiyon oluşturun ve bunu f-string içinde kullanın.
def fonksiyonum(x):
return x * 0.3048
metin = f"Uçak şuan {fonksiyonum(30000)} metre yükseklikte uçuyor."
print(metin)
Çıktı:
Uçak şuan 9144.0 metre yükseklikte uçuyor.
Daha Fazla Değiştirici
Bu bölümün başında, .2f
değiştiricisini kullanarak bir sayıyı, 2 basamaklı ondalıklı sayı olarak biçimlendirmeyi açıklamıştık.
Değerleri biçimlendirmek için kullanılabilecek birkaç başka değiştiriciler de mevcut. Şimdi bunları inceleyelim.
Binlik ayırıcı olarak virgül kullanın:
ücret = 65000
metin = f"Ürünün fiyatı {ücret:,} Türk Lirası"
print(metin)
Çıktı:
Ürünün fiyatı 65,000 Türk Lirası
Aşağıdaki tabloda tüm biçimlendirme türlerini ve ne işe yaradıklarına dair açıklamalarını görebilirsiniz.
Biçimlendirme Türleri
Biçimlendirme Türü | Kullanım Amacı |
---|---|
:< |
Sonucu sola hizalar (kullanılabilir alan içinde) |
:> |
Sonucu sağa hizalar (kullanılabilir alan içinde) |
:^ |
Sonucu ortalar (kullanılabilir alan içinde) |
:= |
İşareti en sol konuma yerleştirir |
:+ |
Sonucun pozitif veya negatif olduğunu belirtmek için artı işareti kullanın |
:- |
Yalnızca negatif değerler için eksi işareti kullanın |
: |
Pozitif sayıların önüne ekstra boşluk eklemek için boşluk kullanır (ve negatif sayıların önüne eksi işareti ekler) |
:, |
Binlik ayırıcı olarak virgül kullanır |
:_ |
Binlik ayırıcı olarak alt çizgi kullanır |
:b |
İkili (Binary) biçim |
:c |
Değeri, karşılık gelen Unicode karakterine dönüştürür |
:d |
Ondalıklı biçim |
:e |
Bilimsel biçim, küçük e harfi ile |
:E |
Bilimsel biçim, büyük E harfi ile |
:f |
Sabit ondalıklı sayı biçimi |
:F |
Sabit ondalıklı sayı biçimi, büyük harf biçiminde (inf ve nan 'ı INF ve NAN olarak göster) |
:g |
Genel biçim |
:G |
Genel biçim (bilimsel gösterimler için büyük E harfi kullanılır) |
:o |
Sekizlik (Octal) biçim |
:x |
Onaltılık (Hex) biçim, küçük harf |
:X |
Onaltılık (Hex) biçim, büyük harf |
:n |
Sayı (number) biçimi |
:% |
Yüzde biçimi |
Örnekler
Aşağıda sola hizala :<
biçimine dair örnek bir uygulama göstermek istiyorum.
Standart f-string ile kodu yazarsak aşağıdaki sonucu elde ederiz.
bilgiler = ["Mustafa", "Halil", "Makine Mühendisi"]
for no, deger in enumerate(bilgiler):
print(f"| {no} | {deger} |")
Çıktı:
| 0 | Mustafa |
| 1 | Halil |
| 2 | Makine Mühendisi |
Koda :<
biçimini eklersek bir değişiklik olur mu? görelim:
bilgiler = ["Mustafa", "Halil", "Makine Mühendisi"]
for no, deger in enumerate(bilgiler):
print(f"| {no} | {deger:<} |")
Çıktı:
| 0 | Mustafa |
| 1 | Halil |
| 2 | Makine Mühendisi |
Gördüğünüz gibi sonuç değişmedi. Peki ya, :<
ifadesinden sonra bir sayı değeri kullansak ne olur?.
bilgiler = ["Mustafa", "Halil", "Makine Mühendisi"]
for no, deger in enumerate(bilgiler):
print(f"| {no} | {deger:<20} |")
Çıktı:
| 0 | Mustafa |
| 1 | Halil |
| 2 | Makine Mühendisi |
İşte istediğim sonuç. F-string biçiminin yanına 20 sayısını yazmakla (:<20
) , deger ifadesinin toplamda 20 karakterlik yer işgal etmesi ve değer'in bu alanda sola hizalanmasını istemiş olduk.
Bu kez de 30 karekterlik yer işgal edip, değeri sağa hizalayalım. Bunu için :>30
ifadesini kullanacağız.
bilgiler = ["Mustafa", "Halil", "Makine Mühendisi"]
for no, deger in enumerate(bilgiler):
print(f"| {no} | {deger:>30} |")
Çıktı:
| 0 | Mustafa |
| 1 | Halil |
| 2 | Makine Mühendisi |