2011-01-23 14 views
12

इस का छोटा रूप है?शॉर्टकट:

if __name__ == '__main__': 

यह मेरी राय :)

+3

"थकाऊ लिखने के लिए" - लेकिन अधिकतम एक बार मॉड्यूल प्रति, आम तौर पर कम अक्सर। "बहुत अच्छा नहीं लग रहा है" - हाँ, लेकिन आप इसे जीवित रहेंगे। – delnan

+3

मैं साल के लिए इसके साथ बच गया है, delnan;) –

उत्तर

12

PEP299 के लिए एक समाधान का प्रस्ताव इस मस्सा, अर्थात् एक विशेष समारोह नाम __main__ रही है। यह अस्वीकार कर दिया था, आंशिक रूप से है क्योंकि:

गुइडो स्पष्ट है कि वह विचार पसंद नहीं है वैसे भी रूप में यह "है लायक नहीं परिवर्तन (डॉक्स, उपयोगकर्ता की आदतों, आदि) और विशेष रूप से कुछ भी नहीं है टूटा । "

http://www.python.org/dev/peps/pep-0299/

तो कुरूपता रहना होगा, कम से कम जब तक गुइडो के BDFL के रूप में।

+3

बीडीएफएल फिर से नहीं कहता है! :) –

9

मूल रूप से हर अजगर प्रोग्रामर करता है में बहुत अच्छी नहीं लगती है सुंदर लिखने के लिए कठिन है, और भी। तो बस इसके साथ रहो। ;)

इसके अलावा आप इसे पूरी तरह से छोड़ सकते हैं यदि आपकी स्क्रिप्ट हमेशा एक अनुप्रयोग के रूप में चलाने के लिए होती है और मॉड्यूल के रूप में आयात नहीं की जाती है - लेकिन आपको इसे किसी भी तरह से उपयोग करने के लिए प्रोत्साहित किया जाता है, भले ही यह वास्तव में आवश्यक न हो।

+6

(मैं एक जवाब है कि करता है वास्तव में प्रश्न का उत्तर नहीं दे के लिए +6 से खुश हूँ) –

+1

शायद मैं एक पीईपी :) –

+3

@Gerald शुरू कर देना चाहिए। : PEP299 (और मेरा जवाब) देखें, ऐसा लगता है कि हम इसके साथ फंस गए हैं। (एक ऐसी भाषा के लिए शर्म की बात है जो अन्यथा इतनी साफ है कि, 1 दिन, एक नया पायथन प्रोग्रामर एक कार्यान्वयन विस्तार से अवगत कराया जाता है जो "पायथन के ज़ेन" की पहली पंक्ति का उल्लंघन करता है: "सुंदर बदसूरत से बेहतर है") –

1

नहीं है, क्षमा करें, नहीं है। यह बहुत अच्छा नहीं लग रहा है, लेकिन यह हमें मिला है।

3

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

मौसा और बॉयलरप्लेट जाना के रूप में, हालांकि, कम से कम यह मामूली है।

3

आप if'__main__'==__name__: की तरह छोटे मतलब है?

7

इस सवाल पूछने के बाद, मैं यह करने के लिए एक समाधान बनाने का फैसला किया:

from automain import * # will only import the automain decorator 

@automain 
def mymain(): 
    print 'this is our main function' 

blog post यह बताते हैं, और code is on github और easy_installed जा सकता है:

easy_install automain 
+6

हालांकि निश्चित रूप से एक साफ पाइथन चाल, इस मॉड्यूल द्वारा जोड़ा गया जटिलता इसे कम उपयोगी बनाता है। इस मॉड्यूल का उपयोग करने वाले कोड में "wtf !?" जाने के लिए कोई भी पाठक होगा, 'अगर __name__ ==' __main __ 'ढूंढने की उम्मीद है: और यहां तक ​​कि सजाए गए एकल भी तर्कसंगत रूप से एक महान बलिदान है। – Walter

+2

... क्या यह लगभग समान लंबाई नहीं है?गिनने के सबसे संभावित तरीके में, यह लगभग 3 वर्ण कम है। 'स्वचालित आयात से * @ automain' बनाम '__name__ ==" __main__ ": mymain()' – dbr

1

छोटा, यदि आप लाइनों की संख्या:

__name__ == '__main__' and main() 
संबंधित मुद्दे