Что такое Python-эквивалент PHP var_dump ()? [Дубликат]

Используйте методы UIPageViewControllerDelegate и настройте защиту, чтобы предотвратить создание новых просмотров страниц при обнаружении чрезмерных поворотов страниц.

  1. Вы можете отключить распознаватели жестов
  2. Установить " userInteraction ", который отключен на UIView
  3. , поддерживает флаг в UIPageViewController, чтобы игнорировать дальнейший ввод, когда происходит анимация. (предупреждение об этой опции .. ios5 и ios6 имеют разные способы определения начала анимации ..)
394
задан Zoredache 14 May 2014 в 19:00
поделиться

6 ответов

Для отображения значения приятно можно использовать печать модуль. Самый легкий способ вывести все переменные с ним состоит в том, чтобы сделать

from pprint import pprint

pprint(globals())
pprint(locals())

, Если Вы работаете в CGI, полезная функция отладки модуль cgitb , который отображает значение локальных переменных как часть traceback.

258
ответ дан Nikita 15 May 2014 в 06:00
поделиться
  • 1
    Ой, you' совершенно правильное ре, который должен был быть authorized_keys. – Swaroop C H 11 October 2008 в 11:27

PHP's var_export () обычно шоу сериализированная версия объекта, который может быть должностным лицом () 'd для воссоздавания объекта. Самая близкая вещь, к которой в Python repr ()

"Для многих типов, эта функция, предпринимает попытку возвратить строку, которая привела бы к объекту с тем же значением при передаче оценке () [...]"

23
ответ дан Cody Casterline 15 May 2014 в 06:00
поделиться
  • 1
    Добавленный @AndreasRossberg, я работал над ним! И Вам не нужны закрытия; они не обеспечивают дополнительного питания по сравнению с контекстно-зависимым к вызову функции, которому можно предоставить станд.:: свяжите, ИЛИ через C++ lambda' s ИЛИ, если Вы особенно в назад совместимость, экземпляры именованного объекта. Закрытия являются синтаксическим сахаром и непосредственно эквивалентны функциональным объектам (или функторы, как мы называем их). – Alice 1 February 2014 в 10:02

print

Для Ваших собственных классов, просто определение __str__ метод

2
ответ дан Oli 15 May 2014 в 06:00
поделиться
  • 1
    @Alice отмечают, что рекурсивные функции требуют немного большего количества работы для memoization. Рекурсивной функции нужно было передать ее рекурсивный вызов в себя. Выполнение так со стиранием типа немного хитро: typedef std::function< void(Args..., my_own_type) > my_own_type; твердо выразить. – Yakk - Adam Nevraumont 1 February 2014 в 06:37

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

def dump(obj):
  '''return a printable representation of an object for debugging'''
  newobj=obj
  if '__dict__' in dir(obj):
    newobj=obj.__dict__
    if ' object at ' in str(obj) and not newobj.has_key('__type__'):
      newobj['__type__']=str(obj)
    for attr in newobj:
      newobj[attr]=dump(newobj[attr])
  return newobj

Вот использование

class stdClass(object): pass
obj=stdClass()
obj.int=1
obj.tup=(1,2,3,4)
obj.dict={'a':1,'b':2, 'c':3, 'more':{'z':26,'y':25}}
obj.list=[1,2,3,'a','b','c',[1,2,3,4]]
obj.subObj=stdClass()
obj.subObj.value='foobar'

from pprint import pprint
pprint(dump(obj))

и результаты.

{'__type__': '<__main__.stdClass object at 0x2b126000b890>',
 'dict': {'a': 1, 'c': 3, 'b': 2, 'more': {'y': 25, 'z': 26}},
 'int': 1,
 'list': [1, 2, 3, 'a', 'b', 'c', [1, 2, 3, 4]],
 'subObj': {'__type__': '<__main__.stdClass object at 0x2b126000b8d0>',
            'value': 'foobar'},
 'tup': (1, 2, 3, 4)}
15
ответ дан Community 15 May 2014 в 06:00
поделиться
  • 1
    @Alice, с помощью посетителей для моделирования вариантов является старым известным приемом, что я раньше делал много в C#, прежде чем я судил F# и Haskell и узнал, что у них есть абсолютная поддержка ADT. Это - больше вопроса использования правильного инструмента для сделать задание. Можно ли сделать дыру с гвоздем вместо развертки? Несомненно Вы можете! Вы сделали бы это хотя, если у Вас есть роскошь для выбора? Я сомневаюсь так. That' s сообщение я думаю Andress, покинутый в его ответе. (Путем ADTS является по существу просто кортежами и вариантами, таким образом, нет такой вещи как более простой или более усовершенствованный ADTS), – Trident D'Gao 1 February 2014 в 18:56

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

class Printer:

       def __init__ (self, PrintableClass):
           for name in dir(PrintableClass):
               value = getattr(PrintableClass,name)
               if  '_' not in str(name).join(str(value)):
                    print '  .%s: %r' % (name, value)

Пример использования:

Printer(MyClass)
1
ответ дан 22 November 2019 в 23:40
поделиться

Я думаю, что лучший эквивалент PHP var_dump ($ foo, $ bar) - это объединить print с vars :

print vars(foo),vars(bar)
319
ответ дан 22 November 2019 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: