python - पाइथन/आईपीथॉन दुभाषिया में एकल अंडरस्कोर_के लिए मान असाइन करना




function ipython (2)

पायथन दुभाषिया _ को अंतिम अभिव्यक्ति मान निर्दिष्ट करता है।

यह व्यवहार केवल आरईपीएल दुभाषिया तक ही सीमित है, और इसका उद्देश्य इंटरेक्टिव कोडिंग सत्रों में सहायता करना है:

>>> import math
>>> math.pow(3.0, 5)
243.0
>>> result = _
>>> result
243.0

मानक पायथन दुभाषिया कुछ समय तक उपयोगकर्ता परिभाषित मानों पर टंप नहीं करता है; यदि आप स्वयं को कुछ और निर्दिष्ट करते हैं तो दुभाषिया उस ओवरराइट नहीं करेगा (तकनीकी रूप से बोल रहा है, _ चर एक __builtin__ विशेषता है , आपके स्वयं के असाइनमेंट 'नियमित' __builtin__ हैं)। हालांकि आप मानक पायथन दुभाषिया का उपयोग नहीं कर रहे हैं; आप आईपीथॉन का उपयोग कर रहे हैं, और वह दुभाषिया सावधान नहीं है।

आईपीथन इस व्यवहार को स्पष्ट रूप से दस्तावेज करता है :

निम्नलिखित ग्लोबल चर हमेशा मौजूद हैं (इसलिए उन्हें ओवरराइट न करें!):

  • [_] (एक एकल अंडरस्कोर): पाइथन के डिफ़ॉल्ट दुभाषिया की तरह पिछले आउटपुट स्टोर करता है।

[...]

पाइथन दुभाषिया के बाहर, _ अनुवादक पाठ समारोह के नाम के रूप में उपयोग किया जाता है ( gettext मॉड्यूल देखें; बाहरी उपकरण उस कार्य के लिए अनुवादनीय तार निकालने के लिए देखें)।

लूप में, _ असाइनमेंट लक्ष्य के रूप में _ का उपयोग करके आपके कोड के पाठकों को बताया जाता है कि आप उस मान को अनदेखा करने जा रहे हैं; उदाहरण के लिए [random.random() for _ in range(5)] यादृच्छिक। यादृच्छिक [random.random() for _ in range(5)] 5 यादृच्छिक फ्लोट मानों की एक सूची उत्पन्न करने के लिए।

मैंने इस फ़ंक्शन को पायथन 2.7 में ipython साथ बनाया है:

def _(v):
    return v

बाद में अगर मैं _(somevalue) कहता हूं, तो मुझे _ = somevalue मिलता है।

in[3]: _(3)
out[3]: 3
in[4]: print _
out[4]: 3

समारोह गायब हो गया है! अगर मैं _(4) कॉल करता हूं तो मुझे मिलता है:

TypeError: 'int' object is not callable`

क्यूं कर? इस समारोह में क्या गलत है?


यदि आप "_" को आवंटित एक चर बनाते हैं तो यह सिस्टम वैरिएबल _ मास्क / मास्क हो जाता है।







read-eval-print-loop