ipython
Ярлыки, подсказки и трюки IPython
Поиск…
замечания
IPython (и Jupyter Notebook) определяет особое значение для подчеркивания. Он всегда содержит последний результат. Это полезно при обработке данных несколькими этапами. Это показано в приведенном выше примере. Чтобы очистить текст, он запускается через несколько регулярных выражений, а затем нормализуется до разделения. Вне IPython каждый результат должен быть сохранен в новой переменной или вложенные шаги. В IPython часто мы изучаем и отслеживаем переменные или воспроизводим длинную серию вложенных вызовов - утомительно. Таким образом, это выражение подчеркивается.
Есть одна добыча. Если вы назначаете значение подчеркиванию в глобальной области, это вызывает неожиданное поведение. Например:
address = ('http://example.com', 80)
(_, port) = address
Здесь меня интересует только второй элемент в кортеже, номер порта. Поэтому я следую конвенции и назначаю первый элемент подчеркиванию, чтобы указать, что это вариант. Однако теперь значение подчеркивания - 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()