Поиск…


замечания

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()


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow