python2.6'daki dosya nesnelerinin bir listesini kapatmak için lambda'yı kullanarak bir kod satırı yazdım:Python3.1'de dosya işlevsel şekilde kapatılamadı mı?
map(lambda f: f.close(), files)
Çalışıyor, fakat python3.1'de değil. Niye ya?
İşte test kodum:
import sys
files = [sys.stdin, sys.stderr]
for f in files: print(f.closed) # False in 2.6 & 3.1
map(lambda o : o.close(), files)
for f in files: print(f.closed) # True in 2.6 but False in 3.1
for f in files: f.close()
for f in files: print(f.closed) # True in 2.6 & 3.1
Not Ayrıca 2to3 bu yakalar ve otomatik olarak acil olarak değerlendirilmesi zorlayarak, sizin için (...) harita çağrıyı listeler. –
'Harita veya benzeri "işlevsel" işlevleri hiçbir zaman yan etkilere sahip fonksiyonlara uygulamayın. Python işlevsel bir dil değildir ve asla olmayacak. Python'un işlevsel bir dil olsa bile, bunun neden sağlıklı bir tavsiye olmayacağını anlamıyorum. Herhangi bir dilde, sonucu kullanmıyorsanız haritayı kullanmanın bir anlamı yoktur. – sepp2k
Yalnızca işlevsel dillerdeki işlevlerin hiçbir yan etkisi yoktur, bu nedenle 'close() işlevi bulunamaz. – Philipp