2010-05-28 12 views
5

अजगर प्रलेखन यह बताता है कि है कोष्ठकों को छोड़ देना एक समारोह में केवल एक ही पैरामीटर लेता है, तो कानूनी है, लेकिनकोष्ठक का उपयोग किये बिना एकल-पैरामीटर पायथन फ़ंक्शन को कॉल करना संभव है?

myfunction "Hello!" 

में सिंटेक्स त्रुटि उत्पन्न करता है। तो, सौदा क्या है?

(मैं अजगर 3.1 का उपयोग कर रहा)

संपादित करें:

बयान है कि मैं केवल generator expressions पर लागू होता है पढ़ें:

 
    The parentheses can be omitted on calls with only one argument. 
+2

क्या आप निश्चित हैं? क्या आप हमें बता सकते हैं कि आप उस नियम को कहां पढ़ते हैं? क्या आप रूबी के साथ उलझन में हैं? –

+1

आप शायद रूबी या लुआ के साथ पाइथन को भ्रमित कर रहे हैं, जहां कभी-कभी परांथेस को छोड़ा जा सकता है। – interjay

+2

@ जेन: वे ब्रांड्स के बारे में बात करते हैं जो जनरेटर को इंगित करते हैं, फ़ंक्शन कॉल नहीं। – SilentGhost

उत्तर

6

अपने संपादित के लिए:

यदि आप एक जनरेटर अभिव्यक्ति लिख, stuff = (f(x) for x in items) की तरह आप कोष्ठक की जरूरत है, जैसा कि आप एक सूची समझ आसपास [ .. ] की जरूरत है।

लेकिन जब आप जेनरेटर अभिव्यक्ति से किसी फ़ंक्शन में कुछ पास करते हैं (जो कि एक सामान्य आम पैटर्न है, क्योंकि जेनरेटर के पीछे यह बहुत बड़ा विचार है) तो आपको s = sum((f(x) for x in items)) जैसे कुछ के बजाय ब्रैकेट के दो सेट की आवश्यकता नहीं है (बाहरी कोष्ठक एक समारोह कॉल, जनरेटर अभिव्यक्ति के लिए भीतरी इंगित करने के लिए) तुम सिर्फ लिख सकते हैं sum(f(x) for x in items)

2

बिना कोष्ठकों उन नहीं होगा functions लेकिन statements या keywords (भाषा-आंतरिक)।

This StackOverflow thread (कुछ बहुत अच्छा जवाब के साथ) contains a lead as कैसे एक शुद्ध पायथन में अपने स्वयं के द्वारा बनाये जा (उन्नत hackery के माध्यम से, और नहीं मामलों के 99.99% में एक अच्छा विचार)।

0

मैं समझता हूँ के रूप में नियम केवल जनरेटर भाव के बारे में ... तो उदाहरण के लिए है: योग (एक्स 2 एक्स के लिए रेंज (10)), लेकिन आपको अभी भी लिखना होगा: कम करें (ऑपरेटर.एड, (x 2 एक्स में श्रेणी के लिए (10))।

हालांकि यह सामान्य कार्यों के लिए लागू नहीं होता है।

3

आप iPython साथ यह कर सकते हैं - इस सुविधा (-autocall 0 का उपयोग सुविधा, -autocall 1, डिफ़ॉल्ट निष्क्रिय करने के लिए -autocall कमांड लाइन विकल्प नियंत्रित करता है, यह काम केवल जब एक तर्क मौजूद है के लिए, और -autocall 2 यह है करने के लिए तर्क-कम कॉलबेल के लिए भी काम करें)।

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

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