Найти - Пользователи
Полная версия: Правильное оформление множественного return 'а
Начало » Python для новичков » Правильное оформление множественного return 'а
1 2
Zyamilon
о/
есть функция:
def test (arg1, arg2):
...
return data1, data2
Т.е. фукнция должна возвращать 2 типа разных данных.
Запускаю функцию так:
data1, data2 = test(arg1, arg2)
#на что получаю:
Traceback (most recent call last):
#...
ValueError: too many values to unpack (expected 2)
Как ето исправить и сделать правильный “множественный return”?
doza_and
Это не в этом месте:
def a():
return 3,4
z,b=a()
Мой код работает
Zyamilon
doza_and
Это не в этом месте:
В смысле? :О
Soteric
У меня работает на Jython.
>>> def test(a1, a2):
... return a1, a2
...
>>> a, b = test(1, 2)
>>> a
1
>>> b
2
doza_and
В смысле ошибка не относится к тому как вы значения возвращаете она где то в другом месте
Zyamilon
Опаньки! А я то уж думал у меня какой-то не правильный пчелы питон.
Оказывается, я банально перепутал функции… 2 часа ночи. Но с этим были проблемы до этого, так что информация всё равно полезна.

Задам сразу тогда еще вопрос:
я вот парсер пишу, который составляет из полученных данных много-много html-страниц и таблиц. Кол-во вода скоро перевалит за 1500 строк. И есть проблемы с не то чтобы читабельностью кода, скорее он выглядит не красиво из-за малого кол-ва отступов.
Есть ли в питоне какая-нибудь такая заглушка, чтобы можно было лишний раз ставить отступы, как бы отделяя блоки кода один от другого?
Думаю использовать уже что-то вроде
“if 1 == 1:”
.
з.ы. отступ = 4 пробела или табуляция в моем понимании
Soteric
Может быть выделять часть кода в отдельные функции/методы?
Zyamilon
Soteric
Может быть выделять часть кода в отдельные функции/методы?
Итак выделены. Даже один модуль есть. Но этого всё равно мало, т.к. функции длинные.
Парсинг табличной верстки дело такое, сами понимаете… Черт ногу сломит в многократных вложениях таблиц в таблицы.
Soteric
Думаю если вы покажете код, то вам смогут дать более практичные советы.
Zyamilon
def build_template_from_original(filename_orig):
"""Открывает файл, выдирает основную таблицу ->> каркас новой страницы"""
#начинаем работу:
html_code = None
html_code = urllib.request.URLopener.open_local_file\
(html_code, filename_orig).read()
tree = html.fromstring(html_code.decode('utf-8'))
tree.getroottree()
#
title = tree.xpath('/html/head/title//text()')[0]
main_table = etree.Element('table')
main_table.set('clasS', 'maintable')
main_table.append(tree.xpath('/html/body/table/tr[2]/td/table/tr/td[2]')[0])
del tree, html_code

#создаем чистый html:
new_html = etree.Element('html')
head = etree.SubElement(new_html, 'head')
body = etree.SubElement(new_html, 'body')

#заполняем мета-теги:
meta_charset = etree.SubElement(head, 'meta', content='text/html; charset=utf-8')
meta_charset.set('http-equiv', 'Content-Type')
meta_title = etree.SubElement(head, 'title')
meta_title.text = title

#заполняем тело:
div_menu = etree.SubElement(body, 'div', clasS='menu')
div_header = etree.SubElement(body, 'div', clasS='header')

#блок описания:
div_content_description = etree.SubElement(body, 'div', clasS='content_description')

#добавляем оригинальную таблицу:
div_content_parsed = etree.SubElement(body, 'div', clasS='content_parsed')
div_content_orig = etree.SubElement(body, 'div', clasS='content_orig')
div_content_orig.append(main_table)

#заголовок страницы:
h1 = div_content_orig.xpath('./table/td/h1[@class="pTitle"]')[0]
div_header.append(h1)

#нафигация:
p_navy = div_content_orig.xpath('./table/td/p[2]')[0]
div_header.append(p_navy)

#результат:
new_html = etree.tounicode(new_html, method='html', pretty_print=False)
return new_html
#-------------------------------------------------------------------------------
Средней (по моим меркам) длины функция. И еще не самый ужас парсинга табличной верстки.
Некоторые куски бы оформить как отдельные блоки… Но я без понятия как это правильно сделать.

Апд: знаю что код в некоторых строках > 80 символов. Но если делать переносы, получается вообще мешанина и ущербность.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB