2012-02-27 16 views
7

अगर कोई एक समारोह अजगर में एक सार्थक मान देने के लिए आवश्यक है या नहीं की जाँच करने के लिए एक तरह से ऊपर में सोच सकते हैं मैं सोच रहा हूँ की वापसी मान "के लिए इंतज़ार कर"। यही है, जांचने के लिए कि क्या वापसी मूल्य का उपयोग के लिए किया जाएगा। मुझे लगता है कि जवाब नहीं है, और मेरे कार्यक्रम प्रवाह को पुन: स्थापित करना बेहतर है। प्रश्न में कार्य एक नेटवर्क सॉकेट से अपने वापसी मूल्य खींचता है। यदि वापसी मूल्य का उपयोग नहीं किया जा रहा है, तो मैं परिणाम प्राप्त करने वाले संसाधनों को बर्बाद नहीं करना चाहता हूं।चेक हो, तो कुछ एक समारोह

मैं बुला लाइन की खोज के लिए ट्रेस बैक उपयोग करने के लिए पहले से ही करने की कोशिश की, लेकिन वह काम नहीं किया। यहाँ है कि मैं क्या मन में था की एक उदाहरण है:

>>> def func(): 
... print should_return() 
... 
>>> func() 
False 
>>> ret = func() 
True 

समारोह "जानता" कि अपनी वापसी मान सौंपा जा रहा है।

>>> def func(**kwargs): 
... should_return = kwargs.pop('_wait', False) 
... print should_return 
... 
>>> func() 
False 
>>> ret = func(_wait=True) 
True 
+4

पायथन में सभी फ़ंक्शन हमेशा वापस आते हैं। यदि आप स्पष्ट रूप से वापस नहीं आते हैं, तो फ़ंक्शन 'कोई नहीं' वापस आते हैं। – birryree

+2

पायथन फ़ंक्शन, वास्तव में, हमेशा वापस नहीं आते हैं। यदि वे वापसी करते हैं, फिर भी, वे हमेशा एक मूल्य वापस करते हैं, जो निर्दिष्ट किए बिना, कोई नहीं है। – Arafangion

+0

मैं समझता हूं कि, लेकिन अधिकांश समय एक समारोह जो 'कोई नहीं' लौटाता है वह कुछ भी वापस नहीं करने के बराबर है। इस मामले में, मुझे यह जांचने की ज़रूरत है कि उसे 'कोई नहीं' के अलावा कुछ भी वापस करना चाहिए या नहीं। – Violet

उत्तर

3

import this के शरीर के बहुत दूसरी पंक्ति में पूछ रहे हैं पूछ रहे हैं यह सब कहते हैं: "स्पष्ट निहित की तुलना में बेहतर है।" इस मामले में, यदि आप एक वैकल्पिक तर्क प्रदान करते हैं, तो कोड अधिक स्पष्ट (और इस प्रकार समझने में आसान) होगा, सरल, तेज़ और सुरक्षित। wait जैसे नाम के साथ इसे अलग तर्क के रूप में रखें।

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

4

सभी कार्यों जब वे पूरा मान:

यहाँ मेरे वर्तमान समाधान नहीं है।

यदि आप अगर वे सब पर लौटना चाहिए, तो आप वास्तव में के बारे में The Halting Problem

+0

मैं समझता हूं कि कोई भी फ़ंक्शन एक मान वापस कर देगा, मैं और पूछ रहा हूं कि यह निर्धारित करना संभव है कि फ़ंक्शन को _meaningful_ मान वापस करना चाहिए या नहीं। – Violet

+0

"सार्थक" से आपका क्या मतलब है? यह अभी भी एक ही रोकथाम समस्या है। – Arafangion

0

अजगर के सभी कार्यों को हमेशा वापस जाएँ। यदि आप स्पष्ट रूप से वापस नहीं आते हैं, तो फ़ंक्शंस कोई नहीं लौटाता है।

===========

डीईएफ़ समारोह(): जबकि यह सच है: पास

इस समारोह वापस नहीं करता है।

अगर एक मनमाना समारोह वापस आ जाएगी निर्धारण करने का कोई तरीका नहीं है। यदि आप कर सकते हैं, तो आपने ट्यूरिंग समस्या हल कर ली है।

0

आप भविष्य, या 'वादा' लौटने की सोच सकते हैं। यही है, एक और कार्य वापस करें, जब निष्पादित किया जाता है, वास्तव में परिणाम निर्धारित करने के लिए आवश्यक कार्य करता है। मुझे लगता है कि आप आलसी मूल्यांकन चाहते हैं, जो कि आपके प्रश्न के बजाए "केवल वही मूल्यांकन करें जो आपको चाहिए" (अधिक या कम), जो भ्रमित रूप से पूछता है: "केवल मूल्यांकन करें यदि यह मूल्य लौटाता है, जिसकी आवश्यकता हो सकती है"।

संबंधित मुद्दे