जब मैं इस स्थिति को पूरा करता हूं तो मैं इसे जावास्क्रिप्ट में कर सकता हूं, मैं हमेशा सोचता हूं कि अगर कोई foreach
फ़ंक्शन है तो यह सुविधा होगी। Foreach से मेरा मतलब है कि जो फ़ंक्शन नीचे वर्णित है:
def foreach(fn,iterable):
for x in iterable:
fn(x)
वे इसे हर तत्व पर करते हैं और कुछ उपज या वापस नहीं करते हैं, मुझे लगता है कि यह एक अंतर्निहित कार्य होना चाहिए और इसे शुद्ध पायथन के साथ लिखने की तुलना में अधिक तेज़ होना चाहिए, लेकिन मुझे यह सूची में नहीं मिला, या इसे सिर्फ एक और नाम कहा जाता है, या मैं यहाँ कुछ बिंदुओं को याद करता हूँ?
शायद मैं गलत हो गया, पायथन में एक समारोह को उच्च बुला रहा है, निश्चित रूप से उदाहरण के लिए एक अच्छा अभ्यास नहीं है। एक आउट लूप के बजाय, फंक्शन को लूप को साइड में करना चाहिए, इसका बॉडी इस तरह दिखता है, जो पहले से ही कई अजगर के कोड सुझावों में उल्लिखित है:
def fn(*args):
for x in args:
dosomething
लेकिन मुझे लगा कि दो तथ्यों के आधार पर अभी भी फॉर्च्यूनर का स्वागत है:
- सामान्य मामलों में, लोग केवल प्रदर्शन के बारे में परवाह नहीं करते हैं
- कुछ समय में एपीआई ने चलने योग्य वस्तु को स्वीकार नहीं किया और आप इसके स्रोत को फिर से नहीं लिख सकते।
for
ऐसा ही है।
list.each(func)
की तुलना में क्लीनर है for item in list: func(item)
, IMO। समस्या यह है कि पायथन ने कार्यात्मक पसंदीदा की जगह map()
और filter()
सूची समझ के साथ एक अच्छा काम किया है जो कि इसके बिल्ट-इन for
और if
(जो सजातीय और पठनीय हैं) का विस्तार करते हैं और एक विशिष्ट .each()
इसके खिलाफ जा सकते हैं।
sum(0 for _ in map(f, seq))
एक पठनीय समाधान है।
for
लूप का उपयोग करने में क्या गलत है ?