Форум сайта python.su
Прошу прощение если название топика не совсем отображает то, что хочу сделать.
Есть в модуле rrdtool функция fetch, которая возвращает кортеж, мне нужно переменным присвоить второй и третий элемент этого кортежа
пример выполения этой ф-ции:
>>> rrdtool.fetch(file, 'AVERAGE', '-s -600', '-e -600')
((1284480000, 1284480300, 300), ('traffic_in', 'traffic_out'), [(424.59491623981006, 107.09591691759539)])
rrdfetch = rrdtool.fetch(file, 'AVERAGE', '-s -600', '-e -600')
dsname = rrdfetch[1]
dsval = rrdfetch[2]
None, dsname, dsval = rrdtool.fetch(file, 'AVERAGE', '-s -600', '-e -600')
Офлайн
dsname, dsval = rrdtool.fetch(file, 'AVERAGE', '-s -600', '-e -600')[1:3]
Офлайн
sp3, благодарю, то что нужно.
Офлайн
Если уж по питоновски, то скорее
_, dsname, dsval = rrdtool.fetch(file, ‘AVERAGE’, ‘-s -600’, ‘-e -600’)
Просто подставляйте _ там, где вам значение не требуется.
Офлайн
Андрей Светлов, а если будет возвращаться ссылка на тяжелый объект? Получится что он так и будет висеть в памяти, после того как мы свяжем его с переменной _.
ЗЫ И вообще почему это питоновский путь? :) Я знаю, что в прологе ‘_’ обозначает анонимную переменную, а тут это откуда?
Офлайн
Будет висеть до выхода из фрейма или нового присваивания - это да.
Просто посмотрите исходники существующих библиотек - так часто делают.
_ - обычная переменная. Можете назвать ее unused или как вам больше нравится.
По сути, достоинство только одно - так легче читать код.
Впрочем, “не нравится - не ешь!”
Офлайн
ZubchickЕсли есть возможность того, что там может быть тяжёлый объект, то всё не сильно сложнее…
а если будет возвращаться ссылка на тяжелый объект?
_, dsname, dsval = rrdtool.fetch(file, 'AVERAGE', '-s -600', '-e -600')
del _
Офлайн
Вывод :)
В общем, если нужные элементы идут в определенном порядке (мой случай например) - то пожалуй лучше сделать так, как предложил sp3, дабы не вводить лишних переменных, занимающих лишнюю память.
Если же необходимые элементы разбросаны по всему объекту без определенного порядка, то, по совету Андрея Светлова, будем использовать временную переменную _, которую, как подсказывает ZZZ, можно тут же удалить дабы освободить память.
Всем спасибо.
Офлайн