2012-01-28 8 views
41

मैं __builtin__ मॉड्यूल के बारे में उत्सुक था और इसका उपयोग कैसे किया जाता है, लेकिन मुझे इसे Python3 में नहीं मिल रहा है! यह क्यों चले गए?Python3 में __builtin__ मॉड्यूल कहां है? इसका नाम क्यों बदला गया?

अजगर 2,7

>>> import __builtin__ 
>>> 

अजगर 3,2

>>> import __builtin__ 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named __builtin__ 
>>> 

उत्तर

57

__builtin__ मॉड्यूल python3 में builtins को दिया गया था।

यह परिवर्तन औसत पायथन डेवलपर के लिए भ्रम के 2 स्रोत हल करता है।

  • यह '__builtins__' या '__builtin__' ग्लोबल नेम स्पेस में है कि है? डर्न एस!
  • __builtin__special method name या एक मॉड्यूल है? मैं नहीं बता सकता।

यह भ्रम मुख्य रूप से pep8 सम्मेलन के उल्लंघन के कारण उत्पन्न होता है। इसके अलावा, मॉड्यूल पर बहुवचन की कमी भी संचार में बाधा डालती है। इन दोनों बहुत लंबाई के रूप में रेखांकित कर रहे हैं गुइडो http://mail.python.org/pipermail/python-ideas/2009-March/003821.html से निम्नलिखित समझाने के पास जाना चाहिए:

[CPython] वैश्विक है, जो एक विशेष जादू प्रविष्टि __builtins__ (एक 'एस' के साथ) होते हैं पर लग रहा है जो है वह नियम जहां अंतर्निहित कार्यों को देखा जाता है। जब ऐसा dict डिफ़ॉल्ट रूप में एक ही वस्तु है निर्मित dict (जो __builtin__.__dict__ जहां __builtin__ - बिना 'एस' - मॉड्यूल को परिभाषित करने में निर्मित कार्यों जाता है) यह देता है आप पर्यवेक्षक विशेषाधिकारों; ...

उदाहरण के लिए,

Python2.7

>>> import __builtin__ 
>>> vars(globals()['__builtins__']) is vars(__builtin__) 
True 
>>> 

Python3.2

>>> import builtins 
>>> vars(globals()['__builtins__']) is vars(builtins) 
True 
>>> 

संबंधित संसाधन:

अन्य नाम परिवर्तन - कैसे __builtins__ नाम संकल्प में प्रयोग किया जाता है का एक संक्षिप्त विवरण के लिए http://docs.pythonsprints.com/python3_porting/py-porting.html#name-changes

-__builtin__ module in Python

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