Как я могу остановить IDLE от печати гигантских списков? - PullRequest
1 голос
/ 04 марта 2009

Иногда я буду работать, скажем, со списком тысяч элементов в IDLE и случайно распечатывать его в оболочку. Когда это происходит, происходит сбой или, по крайней мере, очень сильно замедляется IDLE. Как вы можете себе представить, это крайне неудобно. Есть ли способ сделать это, вместо того, чтобы печатать все это, просто дать мне обобщенный результат [1, 2, ...]? Любая помощь будет высоко ценится.

Ответы [ 5 ]

2 голосов
/ 12 марта 2009

Как и выше, попробуйте пользовательскую функцию печати, например:

def my_print(obj):  
    if hasattr(obj, '__len__') and len(obj) > 100:  
        print '... omitted object of %s with length %d ...' % (type(obj), len(obj))  
    else: print obj
0 голосов
/ 23 ноября 2011

Расширение Squeezer для IDLE было написано именно для этого. Из описания на Pypi:

IDLE может зависнуть, если выводится очень длинный вывод. Чтобы избежать этого, соковыжималка расширения ловят любой вывод длиной более 80 строк текста (настраивается) и вместо этого отображается прямоугольное поле:

Squeezer и многие другие расширения IDLE включены в IdleX .

0 голосов
/ 14 июня 2009

В Python 3, поскольку печать - это функция, вы должны иметь возможность "переопределить" ее. (У меня не установлено, поэтому я не могу попробовать это, чтобы убедиться.) Возможно, не рекомендуется для реальных приложений, но если вы просто пробуете что-то, я думаю, все будет в порядке.

Это будет что-то вроде:

def myprint(*args):
    # write the function as described by other people
print = myprint
0 голосов
/ 04 марта 2009

Вы можете использовать пользовательскую функцию печати. ​​

0 голосов
/ 04 марта 2009

Используйте IPython вместо оболочки.

...