मैंने lythda2.6:Python3.1 में कार्यात्मक तरीके से फ़ाइल बंद नहीं कर सका?
map(lambda f: f.close(), files)
में फ़ाइल ऑब्जेक्ट्स की एक सूची को बंद करने के लिए लैम्ब्डा का उपयोग करके कोड की एक पंक्ति लिखी है, यह काम करता है, लेकिन python3.1 में नहीं है। क्यूं कर?
यहां मेरा टेस्ट कोड है:
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
ध्यान दें कि 2to3 इसे पकड़ता है, और तत्काल मूल्यांकन को मजबूर करने के लिए स्वचालित रूप से आपके लिए मानचित्र कॉल (...) सूचीबद्ध करेगा। –
'साइड इफेक्ट्स के साथ काम करने के लिए मानचित्र या समान "कार्यात्मक" फ़ंक्शंस को कभी भी लागू न करें। पायथन एक कार्यात्मक भाषा नहीं है, और कभी नहीं होगा। ' मुझे नहीं लगता कि यह क्यों अच्छी सलाह नहीं होगी, भले ही पायथन एक कार्यात्मक भाषा थी। यदि आप किसी भी भाषा में परिणाम का उपयोग नहीं करेंगे तो मानचित्र का उपयोग करने में कोई मतलब नहीं है। – sepp2k
पूरी तरह से कार्यात्मक भाषाओं के कार्यों में कोई दुष्प्रभाव नहीं है, इसलिए 'बंद() 'फ़ंक्शन मौजूद नहीं हो सकता है। – Philipp