#metin dosyası içerisinde bir cümle olduğunu düşünelim.
class Dosya():
def __init__(self):
with open ("metin.txt","r",encoding="utf-8") as file:
dosya_içerik=file.read() #read dosya okuma fonksiyonudur.
x=dosya_içerik.split()
for i in x:
print(i)
dosya=Dosya()
yukarıda yazdığım kod tam olarak metin dosyası içerisindeki kelimeleri yazıp alt satıra geçiyor.
ancak x değişkenine atama yapmadan
dosya_içerik.split()
for i in dosya_içerik:
print(i)
şeklinde kodu yazdığımda her bir harfi yazıp alt satıra geçiyor.
sebebini anlayamadım yardımcı olur musunuz ?
dosya_içerik.split(), dosya_içerik üzerinde bir değişim yapmıyor. str’lerin immutable olmasından ve metodun dönüş değerini kullanmanızdan bunu anlayabilirdiniz.
dosya_içerik değişmedi. Değişemez de, çünkü str’ler immutable.
çıktıların farklı olmasını anlayamadım zaten.
yani dosya_içerik i farklı bir değişkene atadığımda (örn : x) metin içerisindekileri kelime olarak ayırırken atama yapmadan döndürdüğümde harf harf ayırıp alt satıra geçiyor.
yani;
değişkene atama yapsamda yapmasamda aynı sonucun olması gerektiğini düşünüyorum.
split() yaptığımızda default olarak split() parantezinin içinde nasıl bir ayar veya değer oluşuyor ordan ilerlersem daha rahat anlarım sanırım.
Attığınız kodda dosya_içerik’i başka bir değişkene atamıyorsunuz. dosya_içerik.split() metodunun dönüş değerini atıyorsunuz.
Zaten değişkene atama yapmanız sonucu değiştirmiyor. for döngüsü ile dosya_içerik yerine dosya_içerik.split() metodundan dönen değer üzerinden geçtiğinizde sonuç değişiyor.
Varsayılan parametrelerden bahsediyorsanız bunun konu ile alakası yok. dosya_içerik.split metodu çağırıldığında dosya_içerik üzerinde bir değişim yapmıyor, bir liste oluşturup onu değer olarak döndürüyor.