Форум сайта python.su
Когда пользуешься функциями вроде dir(), locals(), sys.path и информации выводится много, бывает нагляднее, чтобы каждый элемент выводился с новой строки, а не одной сплошной. Как это можно сделать?
Офлайн
Тока это в голову приходит =)
for x in locals().copy():
print x
Отредактировано (Март 17, 2008 22:49:19)
Офлайн
Получилось, спасибо! А одной строкой не получится?
Офлайн
О, и одной строкой получилось:
for x in locals(): print x
Меня просто .copy() смутило, но это чтобы не внести изменений ненароком, а аккуратно можно и без .copy(), да?
Офлайн
С dir() и sys.path прокатит и без copy.
А вот с locals() - на моем питоне (2.5.1) - он ругается: “RuntimeError: dictionary changed size during iteration”
Офлайн
Мне такой ошибки не даёт (винда, интерактив):
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:41:48)
Офлайн
Ребята, вы видели модуль pprint?
from pprint import pprint
pprint(dir(), width=1)
И так далее…
Офлайн
Андрей СветловЧерт =)
Ребята, вы видели модуль pprint?
Офлайн
Спасибо за pprint, хотя не хватает сортировки по имени. Чтобы содержимое любого списка/кортежа/словаря можно было быстро вывести построчно, по алфавиту и без гемора. Есть ли такой модуль?
Офлайн
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.
А вот списки наверное самому придется сортировать
Офлайн