ipython
IPython शॉर्टकट, टिप्स और ट्रिक्स
खोज…
टिप्पणियों
IPython (और Jupyter नोटबुक) अंडरस्कोर के लिए एक विशेष अर्थ को परिभाषित करता है। इसमें हमेशा सबसे हाल का आउटपुट होता है। यह कई चरणों में डेटा को संसाधित करते समय उपयोगी होता है। यह ऊपर के उदाहरण में दिखाया गया है। पाठ को साफ करने के लिए, इसे कुछ नियमित अभिव्यक्तियों के माध्यम से चलाया जाता है और फिर विभाजित होने से पहले सामान्य किया जाता है। IPython के बाहर, प्रत्येक परिणाम को एक नए चर या चरणों में संग्रहीत किया जाना चाहिए। आईपीथॉन में, अक्सर हम खोज कर रहे हैं और चर का ट्रैक रख रहे हैं या नेस्टेड कॉल की एक लंबी श्रृंखला को पुन: पेश कर रहे हैं। तो यह वह जगह है जहाँ अंडरस्कोर दिखाई देता है।
एक गोत्र है। यदि आप वैश्विक स्कोप में अंडरस्कोर के लिए कोई मान असाइन करते हैं, तो यह अनपेक्षित व्यवहार का कारण बनता है। उदाहरण के लिए:
address = ('http://example.com', 80)
(_, port) = address
यहाँ मैं केवल दूसरे तत्व में tuple, port संख्या में रुचि रखता हूँ। इसलिए मैं सम्मेलन का पालन करता हूं और यह इंगित करने के लिए कि इसे फेंकने के लिए पहले तत्व को अंडरस्कोर में असाइन करता हूं। हालाँकि, अब अंडरस्कोर का मूल्य http://example.com
। और अगर मुझे अधिक कोड चलाना था:
1+4
अंडरस्कोर का अपेक्षित मूल्य 5 होगा। हालांकि, यह नहीं है। मूल्य अभी भी टपल से डोमेन है। जब आप वैश्विक दायरे में अंडरस्कोर को असाइन करते हैं, तो यह न केवल मान को बंद कर देता है, बल्कि सबसे हालिया आउटपुट को संग्रहीत करना भी बंद कर देता है। यदि आप किसी फ़ंक्शन या लूप के अंदर अंडरस्कोर को असाइन करते हैं तो यह मामला नहीं है।
IPython में अंडरस्कोर का विशेष उपयोग
from urllib.request import urlopen
from collections import Counter
import re
conn = urlopen('http://textfiles.com/100/dodontae.hum')
lines = conn.readlines()
conn.close()
# readlines() returns byte strings
data = ''.join([line.decode('utf-8') for line in lines])
# replace non-letters with a space
re.sub('[^A-Za-z]', ' ', data)
# condense successive whitespace into a single space
# the underscore retrieves the most recent output
re.sub('\s+', ' ', _)
# normalize the text by lowercasing and removing leading and trailing whitespace
_.lower().strip()
# split into words on space
words = _.split(' ')
from collections import Counter
word_count = Counter()
for word in words:
word_count[word[0]] += 1
word_count.most_common()