Почему генератор Python3 в интерпретаторе в конце возвращает None List? - PullRequest
0 голосов
/ 09 ноября 2019

Во-первых, я взял Python, как 3 года назад, и мне это нравится. Обычно я просто использую прямой подход и тестирую код, пока набираю его в IDE. Но совсем недавно я использовал интерактивную консоль для тестирования фрагментов «идей», и, как это утомительно, печатать я использовал генераторы, и я озадачен этим списком None элементов, пока числоэлемент, сгенерированный в конце.

Для этой цели я использовал этот код для передачи некоторой информации о некоторых приложениях

data_stream = run('powershell -Command " & {ps -Id %s | select MainWindowHandle, name, id, '
                                                           'mainwindowhandle, startime}"'%_proc,
                                                            bufsize=0, stdout=PIPE, stderr=PIPE,
                                                        universal_newlines=0, shell=True).stdout.decode('utf-8').split('\r\n')[2:-4]

# Yes, I know the risk that involves using shell=True

Это возвращает список, подобный этому (Это способ, которым я хочу напечататьэто)

['Name             : _procexe',
 'Id               : 1313',
 'MainWindowTitle  : PROCIMPORTANT SOMEDATE', 
 'MainWindowHandle : 666666',
 'StartTime        : 01-01-1971 01:16:25']

Теперь, чтобы напечатать это, я использую эту команду

[print(x) for x in data_stream]

, и это получается

>>> [print(x) for x in data_stream]
Name             : _procexe
Id               : 1313
MainWindowTitle  : PROCIMPORTANT SOMEDATE
MainWindowHandle : 666666
StartTime        : 01-01-1971 01:16:25
[None, None, None, None, None]

Я обычно проверяю для None элементов, которыене должно быть там, и если они должны быть там, поэтому я не заметил этого в своих сценариях.

Меня просто сбивает с толку, почему он добавляет такой список в конце.

Также яЯ попытался найти его на английском и испанском языках, и это действительно странно, потому что каждый раз, когда я спрашиваю другие темы, продолжаю появляться.

...