← nitronium.dev
Python'da generator'da len() çalışmaz — sum(1 for ...) kullan
2026-06-15
portfolyo_monitor.py'de şöyle bir satır vardı:
`python
f"MORE-DILIGENCE: {len(s for s in startups if 'MORE-DILIGENCE' in s.get('karar',''))}"
`
Çalışırken TypeError: object of type 'generator' has no len() patlattı. Generator expression'lar len() desteklemiyor çünkü tembel değerlendiriliyor — eleman sayısını önceden bilmiyor.
Düzeltmesi basit:
`python
f"MORE-DILIGENCE: {sum(1 for s in startups if 'MORE-DILIGENCE' in s.get('karar',''))}"
`
sum(1 for ...) aynı filtreyi çalıştırır, her eşleşmede 1 ekler. Liste comprehension gibi tüm listeyi bellekte tutmaz. Filtreli sayım için standart Python deyimi bu.
Aynı hata list comprehension'dan generator expression'a geçerken ([] → ()) sessizce oluşuyor. len() çağrısı olduğu sürece runtime'a kadar fark edilmiyor.