Форум → Программирование → Python → Что я, %username%, ненавижу в Python
Что я, %username%, ненавижу в Python
Страницы: ← Предыдущая страница • Следующая страница →
-
Апрель 14, 2010, 6:33 п.п., спустя 13 минут 41 секунду
хорошо
7. Лямбды являются не полноценными функциями, а выражениями. Сколько-нибудь сложной структуры в них не реализовать.
Можно конечно сначала определить функцию, а потом её использовать. Но это лишние телодвижения, засорение контекста и не многим удобнее чем даже в PHP определить функцию и передать дальше её имя. -
Апрель 14, 2010, 6:46 п.п., спустя 13 минут
Да, согласен, в жс они лучше… надо почитать почему они не такие как в жс, напримерСпустя 8 сек.в силу каких причинhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Апрель 15, 2010, 8:52 п.п., спустя 1 день 2 часа 5 минут
Всё-таки продолжим по-тихоньку3. Так используй str.__len__
Использовать нужно так как сделано в языке и рекомендовано.
А вот почему так сделано не понятно.
Например, self-аргумент в методах тоже может вызывать споры и непонимание, но за ним всё-таки стоит своя идеология.
За len() я её не вижу.
Если она есть - объясните. -
Апрель 15, 2010, 11:38 п.п., спустя 2 часа 45 минут 53 секунды
Объяснение Гидо является здесь:
Прежде всего, я выбрал LEN (X) по сравнению с x.len () для HCI причинам (Def __len__ () пришла намного позже). Существуют две взаимосвязанные причины на самом деле, как HCI:
(а) для некоторых операций, префиксов обозначения просто читает лучше, чем Postfix - префикс (и инфиксные!) операции имеют давние традиции в области математики, где любят обозначения помощью визуальных математик думать о проблеме. Сравните легкий, с которой мы перепишем формулу, как X * (A + B) в X * X + * B на неуклюжесть делает то же самое с сыром обозначения OO.
(B) Когда я прочитал кодом, который говорит, LEN (X) Я знаю, что он подал запрос на длину чего-то. Это говорит мне две вещи: результат является целым числом, и этот аргумент является своего рода контейнер. Наоборот, когда я читал x.len (), я должен уже знаем, что X является своего рода контейнером, реализующий интерфейс или наследовать от класса, который имеет стандартный LEN (). Свидетель путаницы мы иногда, когда есть класс, который не выполняет отображение имеет получите () или ключей () метод, или что-то не является файл Write () метод.
Говорит то же самое по-другому, я вижу 'лень как встроенный в эксплуатацию. Я бы очень не хотелось терять. / … /
У Гвидо есть акцент небольшой в тексте :)
Я есть взять этот тут http://ru.how-to.mobi/index.php?id=83983Спустя 290 сек.О, я нашел кладезь ответов!
http://www.python.org/doc/faq/general/#why-does-python-use-methods-for-some-functionality-e-g-list-index-but-functions-for-other-e-g-len-listСпустя 23 сек.И следующий сразу4.8 Why is join() a string method instead of a list or tuple method?
https://smappi.org/ - платформа по созданию API на все случаи жизни -
Апрель 19, 2010, 7:02 п.п., спустя 3 дня 19 часов 24 минуты
"Историческое наследие", слабая отмаза, так как пых такой уродливый по мнению многих тоже во многом из-за своего наследия. А про неуклюжесть вообще низачот.
Насчет join-на придумал своё объяснение, которое, кажется, даже более по существу.
В JS мы пишем [1,2,3].join("") и нам пох, так как там только для массива join и есть
А в питоне всё что угодно может быть итерируемым в любом месте иерархии.
join() по сути что делает - перебирает итерируемую последовательность, приводит элементы к строке и склеивает.
Т.е. реализация у неё будет всегда одна.
А пихать эту реализацию во все класс, поддерживающие перебор излишне геморно -
Июль 24, 2010, 2:52 п.п., спустя 95 дней 19 часов 49 минут
Форматирование строки:
qwerty = "Строка"
huerti = 25
print("qwerty=%s huerti=%d" % (qwerty, huerti))
Да, последнее время рекомендуется для этого дела .format(), но всё равно интересно почему
1. Нужно указывать тип параметров (%s, %d), ведь это не Ц, это Питон, мягко типизируемый и любящий полиморфизм, он же типы переменных сам должен знать на этапе выполнения.
2. Почему параметры только в кортеже передавать можно? Почему в списке нельзя? -
Июль 24, 2010, 3:04 п.п., спустя 12 минут 9 секунд
1. Видимо отголоски прошлого, сделали по аналогии с printf. Да, юзай format()
2. А чем кортеж не устраивает? Можно список преобразовывать в кортеж:
print("qwerty=%s huerti=%d" % tuple(my_list))https://smappi.org/ - платформа по созданию API на все случаи жизни -
Июль 24, 2010, 3:06 п.п., спустя 2 минуты 8 секунд
А чем кортеж не устраивает?
Иногда сформировать нужно список параметров последовательно.Да, юзай format()
оки -
Июль 24, 2010, 7:37 п.п., спустя 4 часа 30 минут 53 секунды
хочу начать изучать новый язык. подумываю о питоне. стоит ли изучать именно его? или что-то другое? -
Июль 24, 2010, 7:50 п.п., спустя 13 минут 41 секунду
Хочешь что-то сделать - сделай и нефиг ни у кого спрашивать :) -
Июль 24, 2010, 7:54 п.п., спустя 3 минуты 57 секунд
+1
Хочешь что-то сделать - сделай и нефиг ни у кого спрашивать :)https://smappi.org/ - платформа по созданию API на все случаи жизни -
Янв. 25, 2011, 10:26 д.п., спустя 184 дня 15 часов 31 минуту
https://smappi.org/ - платформа по созданию API на все случаи жизни -
Янв. 25, 2011, 6:53 п.п., спустя 8 часов 27 минут 35 секунд
"Императивность ортогональна функциональности" - я впадаю в депрессию от таких фраз. Это как тест на полноценность. Хочется сказать что-нибудь дерзкое: "Дяденька, я ведь не настоящий программист" или "Завали своё дуло".
[tt]Откуда идут «функциональные» корни Python[/tt]. Куда они идут эти корни!
Лямбды существуют уже лет пятьдесят в самых примитивных языкахιιlllιlllι унц-унц -
Авг. 9, 2011, 11:17 п.п., спустя 196 дней 3 часа 23 минуты
В питоне элементы в словаре неупорядочены. Меня это дико напрягает, хотя понятно, что это более строгий и логичный подход, чем то как устроены ассоциативные массивы в пхп … -
Авг. 9, 2011, 11:18 п.п., спустя 1 минуту 54 секунды
чем то как устроены ассоциативные массивы в пхп …
так они там тоже неупорядочены … или я тебя неправильно понял :-)
по умолчанию то они отсортированы в порядке добавления в массив и не более ..Сапожник без сапог
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!