#  Re: эха про python
Andrew Lobanov (station13, 1) → Roman Yakovlev  –  04:26:56 2015-09-11

>>Сразу же вопрос: насколько оптимизированы всякие штуки, как то приведение типов или методы .split/.join? Просто порой мне начинает казаться, что я увязаю в болоте синтаксического сахара, но при этом не уверен, что внутри этого всего нет оптимизированных низкоуровневых реализаций, а значит моя высокоуровневая реализация таких штук "по-старинке" будет медленнее.
>это идеология. :) всё, что укладывается в pep8 и pep20 - питоноугодно. всё, что нет - нет
Поутру перечитал и решил добавить. Вопрос сугубо технический =) Если его перефразировать, то звучит примерно так:

Я привык считать приведение типов, работу с нетипизированными массивами (читай списками) медленными операциями. Определение длинны строки -- медленная операция. Но вот, например, классическая задачка по программированию: определить разряд числа. Классическим питон-решением является:


number_length(num):
return len(str(num))


если не вспоминать про проверку типа получаемых данных и прочие защиты от дурака.

С точки зрения "классического" программирования это решение неэлегантно и неторопливо. Гораздо быстрее будет работать такой вариант:


number_length(num):
n = 0
while num > 0:
n = n + 1
num = num // 10
return n


Вот и вопрос отсюда: как оптимальнее с точки зрения питона? Конечно, я бы мог написать несколько тестов для проверки этого факта, но всегда было интересно мнение непосредственно питонщиков по этому вопросу.

P.S.: Кто-то классическое решение такой задачки мне даже лайкнул на checkio.org.
Powered by iii-php v0.11