list - Why is a default value set for a Python 3 function overwritten when the function gets called multiple times? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 2 9 उत्तर

क्या कोई मुझे समझा सकता है, जब मैं इस फ़ंक्शन को कई बार कॉल करता हूं, एल डिफ़ॉल्ट रूप से खाली नहीं होता है? लेकिन इसके बजाय किसी भी निम्न कॉल का परिणाम पिछले कॉल के सभी परिणामों में एल जोड़ता है?

फ़ंक्शन डेटा को अंतिम दिनों ([:: - 1]) से शुरू करते हुए 7 दिनों के ब्लॉक में अलग करता है, प्रत्येक 7 दिनों के मतलब की गणना करता है और परिणाम को सूची में मान के रूप में जोड़ता है। अधूरे ब्लॉकों पर ध्यान न दें

डेटा के लिए डिफ़ॉल्ट मान क्रमिक प्रारूप में तिथियों की एक सूची है।

  def अलग (डेटा = [i के लिए i] [:: - 1], एल = []): प्रिंट ("अलग कहा गया है, डेटा% s है और एल% s है"% (डेटा, एल)) अगर लेन (डेटा) & lt; 7: वापसी एल कुल = 0 दिनांक = डेटा में मूल्य के लिए 0: यदि w [value]! = "None": total + = float (w [value]) दिनांक + = 1 L.append (कुल / दिनांक) अलग वापसी (डेटा [7: ], एल)  

से लिया गया:

डिफ़ॉल्ट मान का मूल्यांकन केवल एक बार है डिफ़ॉल्ट, एक सूची, शब्दकोश या अधिकांश वर्गों के उदाहरण जैसे एक अस्थायी वस्तु है, जब यह एक फर्क पड़ता है।

[...]

यदि आप नहीं चाहते हैं बाद में कॉल के बीच साझा किया जाने वाला डिफ़ॉल्ट, आप इसके बजाय फ़ंक्शन लिख सकते हैं:

  def f (a, l = कोई नहीं): यदि एल कोई नहीं है: एल = [] L.append ( ए) रिटर्न एल  

Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

ios - Subclassing UIView and adding a property -

Powerbuilder 12.1 and DataWindow in Design vs Debug and Executable/Runtime -