2015-03-27 4 views
5

मैं इस रेपो https://github.com/datacenter/cobra में कोड से देख रहा हूँ और कुछ फाइलों में इस प्रकार मैं builtins से आयात देख रहा हूँ:यदि आप कभी भी अंतर्निहित कार्यों को फिर से परिभाषित नहीं करते हैं तो बिल्टिन आयात क्यों करें?

cobra/internal/codec/jsoncodec.py:15:from builtins import str 
cobra/internal/codec/xmlcodec.py:15:from builtins import str 
cobra/internal/base/moimpl.py:16:from builtins import next 
cobra/internal/base/moimpl.py:17:from builtins import str 
cobra/internal/base/moimpl.py:18:from builtins import object 
cobra/internal/rest/accessimpl.py:15:from builtins import object 
cobra/internal/rest/accessimpl.py:16:from builtins import str 
cobra/mit/session.py:15:from builtins import str 
cobra/mit/session.py:16:from builtins import object 
cobra/mit/meta.py:16:from builtins import str 
cobra/mit/meta.py:17:from builtins import next 
cobra/mit/meta.py:18:from builtins import object 
cobra/mit/access.py:21:from builtins import object 
cobra/mit/naming.py:15:from builtins import next 
cobra/mit/naming.py:16:from builtins import str 
cobra/mit/naming.py:17:from builtins import object 
cobra/mit/request.py:15:from builtins import str 
cobra/mit/request.py:16:from builtins import object 

क्या तर्क/क्या ऐसा करने से फायदा हुआ है? मॉड्यूल में कोई जगह नहीं है जहां इन वस्तुओं को फिर से परिभाषित किया गया है।

एक तरफ नोट पर, यह 2.7 संगतता को तोड़ता है जो मैं दस्तावेज़ों में निर्दिष्ट इस मॉड्यूल से अपेक्षा कर रहा था।

+0

शायद एक अच्छा बेहतर विचार परियोजना के डेवलपर्स से पूछना चाहिए कि वे ऐसा क्यों करते हैं! –

+0

मॉड्यूल नेमस्पेस में उन नामों को रखने के लिए 1. अंतर्निहित के रूप में उन्हें एक्सेस करने से बहुत अधिक प्रदर्शन करने वाला होगा, और 2. अंतर्निहित किसी भी आयातित मॉड्यूल की पुनर्वितरण के पुनर्वितरण से प्रभावित नहीं होंगे। उन्होंने ऐसा क्यों किया, मैं नहीं कह सकता; लोगों को बस इसे बेहतर तरीके से पसंद आया ... – kindall

+0

किस मामले में आपको बिल्टिन विधियों को आयात करने की आवश्यकता है? और, यह दृष्टिकोण पायथन 2.x –

उत्तर

8

मुझे नहीं पता कि यह विशेष रूप से कोबरा में क्यों किया गया है, लेकिन यह कोड लिखने के लिए एक चाल है जो अजगर 2 और 3 में काम करता है। compatible_idioms देखें। इसे 2.7 तोड़ना नहीं चाहिए, लेकिन आपको "3x-ish" कोड लिखना होगा।

अद्यतन

2.x के लिए, builtins मॉड्यूल pypi से स्थापित किया जाना चाहिए। यह मूल निर्मित कार्य नहीं है, लेकिन 3.x संगत अद्यतन।

+1

नोट 'बिल्टिन्स' _future_ pypi पैकेज का हिस्सा है (यानी इसे 'पीआईपी इंस्टॉल भविष्य के माध्यम से स्थापित किया जा सकता है) –

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

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