pythboa
Март 17, 2008 22:40:14
Когда пользуешься функциями вроде dir(), locals(), sys.path и информации выводится много, бывает нагляднее, чтобы каждый элемент выводился с новой строки, а не одной сплошной. Как это можно сделать?
shiza
Март 17, 2008 22:48:32
Тока это в голову приходит =)
for x in locals().copy():
print x
pythboa
Март 17, 2008 22:58:11
Получилось, спасибо! А одной строкой не получится?
pythboa
Март 17, 2008 23:07:46
О, и одной строкой получилось:
for x in locals(): print x
Меня просто .copy() смутило, но это чтобы не внести изменений ненароком, а аккуратно можно и без .copy(), да?
shiza
Март 17, 2008 23:50:51
С dir() и sys.path прокатит и без copy.
А вот с locals() - на моем питоне (2.5.1) - он ругается: “RuntimeError: dictionary changed size during iteration”
pythboa
Март 18, 2008 00:36:19
Мне такой ошибки не даёт (винда, интерактив):
sys.version
2.5 (r25:51908, Sep 19 2006, 09:52:17)
dictionary changed size during iteration – от самой команды меняться ему вроде не с чего, может словарь locals() меняет что-то другое, да так быстро, что не успевает пройти цикл print по всем элементам словаря? (просто гадаю)
for x in __builtins__.__dict__: print x
- пример полезости построчного вывода :) иначе завалило бы.
# поподробнее: ключи + значения
for x in __builtins__.__dict__.items(): print x
Вообще можно модуль такой себе представить: вызываешь с именем объекта, он создает текущую копию, идентифицирует его и предлагает доступные опции отображения; для словарей, списков и т.д. они будут разные. Напр., locals(): вам построчно или одной строкой? А по имени отсортировать? Экспортируемые скрыть нафиг? и т.д. Может даже есть уже где-нибудь.
Андрей Светлов
Март 18, 2008 00:46:59
Ребята, вы видели модуль pprint?
from pprint import pprint
pprint(dir(), width=1)
И так далее…
shiza
Март 18, 2008 00:50:58
Андрей Светлов
Ребята, вы видели модуль pprint?
Черт =)
pythboa
Март 18, 2008 01:33:19
Спасибо за pprint, хотя не хватает сортировки по имени. Чтобы содержимое любого списка/кортежа/словаря можно было быстро вывести построчно, по алфавиту и без гемора. Есть ли такой модуль?
shiza
Март 18, 2008 03:10:21
PPRINT:
Changed in version 2.5: Dictionaries are sorted by key before the display is computed; before 2.5, a dictionary was sorted only if its display required more than one line, although that wasn't documented.
А вот списки наверное самому придется сортировать