LINUX.ORG.RU

The undocumented converse implication operator

facepalm.jpg

t184256 ★★★★★
()

Indexing with floats

>>> [4][0]
4
>>> [4][0.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not float
>>> {0:4}[0]
4
>>> {0:4}[0.0]
4

Какой впечатлительный попался O_o. А чего он ожидал?

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Да уж понятно, что питонисты о тех, кто будет ВЫНУЖДЕН учить их язык думать не желают.
Только тогда бы уж лучше вас вообще не было.
А то что ни приложение, то используется ваш питон для плугинов.
Хочешь не хочешь, а ПРИХОДИТСЯ учить это ваше изобретение.

И можете не волноваться на мой счёт, но только не обижайтесь, если я обругаю ваш язык на форуме.

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

Твои фобии всем побоку, говорю же. А если твой внутриголовной парсер не может в синтаксис без скобок, то тебе должно быть трудно не только с питоном, но и вообще по жизни.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

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

Лично мне хватает и выискивания всяких мелких опечаток, что бы добавлять к этому ещё и подсчитывание табуляции.
Но приходится к сожалению.

torvn77 ★★★★★
()

Есть две ортогональных характеристики: easy/hard, simple/complex. Питон easy, но complex.

PolarFox ★★★★★
()
Ответ на: комментарий от torvn77

Никто никому ничего не должен. Не нравится язык, используй другой, что бы ты там не говорил, никто не заставляет. Программа работает только с плагинами на питоне? Используй другую программу или вообще свою пиши. Или меняй профессию.

PolarFox ★★★★★
()
Ответ на: комментарий от true_admin

bool в питоне это замаскированный int. Поэтому

Согласен, просто на мой вкус оно некрасиво, неочевидно и в общем-то не очень правильно. В том числе и вот это вот дело

«1 + True == 2».

по-хорошему должно выдавать ошибку, в отличии от, скажем, 1 *and* True.

alienclaster ★★★
()
Ответ на: комментарий от Deleted

Попросту True и False это define True 1, define False 0 в интерпретаторе.

Я в курсе, просто это не совсем правильно отождествлять ноль с False и так далее. Но в python оно так.

Как и в Mixing numerical types. Тут играют с максимальной точностью Double.

Честно говоря, этот пример вообще из виду упустил. Хотя бы потому что с плавающей точкой языки работают каждый кто во что горазд.

alienclaster ★★★
()
Ответ на: комментарий от x3al

Не, ты не умеешь, надо так:

>>> {} is {}
False
>>> id({}) == id({})
True
anonymous
()
Ответ на: комментарий от torvn77

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

Это не форматирование, а синтаксис, дурилко.

anonymous
()
Ответ на: комментарий от alienclaster

Из-за обратной совместимости так. В старых версиях True и False были просто алиасами для 1 и 0.

Ну и местами оно даже удобно. Можно делать вещи типа num_blocked_users = sum(user.is_blocked() for user in users). Плюс идейная совместимость с Си и т. д. Поэтому ломать нынешнее поведение смысла нет.

anonymous
()
Ответ на: комментарий от PolarFox

Я не программист, я фрезеровщик и по этому меня нельзя упрекать за ни какое знание языка и тулкитов.
Ну и мне надо порой сделать элементы управления ЧПУ,
какое нибудь окощечко с кнопкой и индикатором, или калькулятор рабочего времени.
Иногда просто вставить метку что типа программа пошла по этой ветке исполнения.

С другими языками я могу спокойно втюхнуть в чужой код что мне надо, не особо разбираясь в синтаксисе и правилах языка.
Ну конечно ясно. что рвать конструкции нельзя, но для этого знать весь язык не обязательно.
А что будет с программой на питоне если я туда влезу и нарушу форматирование?
К чему там прилепится то что я туда всунул?
Честно говоря я не пробовал менять код на питоне,
пока только смотрел программы и приценивался,
но одно то, что помимо некоторого распутывания придётся считать ещё и форматирование мне не не удобно, и чую, что придётся учить язык подробно, больше , чем мне это необходимо при работе с другими языками.

И я считаю, что если вы добились того, что ваш язык везде используется для написания плугинов, то вы и получили связанные с этим обязанности.

Питон больше не ваша частная нора, в которой вы могли бы делать всё что захотите.
Вы должны считаться и с теми, кто использует ваш язык постольку поскольку его используют другие.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 3)
Ответ на: комментарий от torvn77

И я считаю, что если вы добились того, что ваш язык везде используется для написания плугинов, то вы и получили связанные с этим обязанности.

Кто мы-то, ёпт? Ты один здесь сидишь жалуешься, мы для твоего софта ничего не добивались. Не нравится - обратись к поставщику, пускай встроит туда JavaScript, щас модно.

anonymous
()
Ответ на: комментарий от Deleted

понятная лишь просвящённым питонистам.

Я догадывался что ты идиотик, прикипевший к паскалю, но чтоб настолько. Простой вопрос: по твоему

def foo(a):
    def bar():
        use(a)

    return bar

print foo(1) == foo(2)

что должно вывести?

anonymous
()
Ответ на: комментарий от anonymous

num_blocked_users = sum(user.is_blocked() for user in users)

Ну, вы же сами понимаете, что это просто эксплуатация хака. И более правильно было бы писать хотя бы так:

num_blocked_users = len([user for user in users if user.is_blocked()])

А если вам с этим список потом еще и работать как-то, кроме подсчета количества?

Плюс идейная совместимость с Си

Спорное преимущество :)

этому ломать нынешнее поведение смысла нет.

За ломать вроде бы речи не идет.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

Ну, вы же сами понимаете, что это просто эксплуатация хака.

The class bool is a subclass of the class int

Документашка явно дает понять, что это не хак.

anonymous
()
Ответ на: комментарий от anonymous

Что ты пытаешься доказать? Что питон простой язык? Весь этот тред об обратном. Вот синтаксис у него да, простой.

Deleted
()
Ответ на: комментарий от anonymous

Документашка явно дает понять, что это не хак.

:D да то уже задним числом дописали полюбому.

alienclaster ★★★
()
Ответ на: комментарий от torvn77

С пробелами проблем не возникает в любом редакторе приличнее notepad.exe.

А так язык всё же ориентирован на тех, кто пишет код сам, а не копипастит его со stack overflow, а если и копипастит, то хотя бы понимает что копипастит.

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

PolarFox ★★★★★
()
Ответ на: комментарий от Deleted

Весь этот тред об обратном.

Нет. Он настолько простой, что ему пытаются приписать какие-то сложности, как сделал ты, например. У меня для тебя еще вариант есть, полегче, ну и чтоб не шланговалось:

Что по твоему должно вывестись?

def foo(a):
    def bar():
        pass
    bar.value = a
    return bar

print foo(1).value == foo(2).value
anonymous
()
Ответ на: комментарий от anonymous

почти всё явно и логично.

Дык он же не умеет в логику, от того и сложно.

anonymous
()
Ответ на: комментарий от vzzo

Меня как раз += убил. Получается, строгой гарантии безопасности исключений в питоне для встроенных операций нет?

В питоне нет такого явного понятия и нет никаких встроенных операций. Есть стандартныые методы у объектов реализующие некий интерфейс и они обычно у стандартных структур данных имеют такую гарантию.

Операция «+=» раскладывается на две - мутабельный __iadd__() над списком и мутабельный __setitem__() над таплом, каждая из них ES, но вместе они таковыми не являются. В этом месте поведение аналогично другим ЯП.

Естественно, последний фейлится т.к. такого метода у тапла нет, а конструктор тапла не хочет/может проверять что его строят из мутабельных типов ибо архитектура питона слишком глупая и этого сделать не позволяет. Например, в питоне нет понятия константного (немутабельный) объекта или ссылки на него. В принципе это недостаток дизайна языка, а не баг реализации.

mashina ★★★★★
()
Ответ на: комментарий от ei-grad

Кажется, вы ошиблись вкладкой, это не твиттер.

mashina ★★★★★
()
Ответ на: комментарий от mashina

а конструктор тапла не хочет/может проверять что его строят из мутабельных типов ибо архитектура питона слишком глупая и этого сделать не позволяет.

Гм. То есть ты хочешь сказать что язык должен различать

t = ([],)
t[0] = t[0] + [1]

и

t[0] += [1]

Прости, но ты не совсем внятен в своих рассуждениях.

anonymous
()

Как-то уныленько честно говоря. Автор высера - пока самый большой wat.

entefeed ☆☆☆
()
Ответ на: комментарий от mashina

Не совсем понимаю. __iadd__() это аналог +=? Тогда вполне логично, что он выполняется над списком и приводит к такому результату. Но зачем после выполнения += вызывать __setitem__?

Получается какой-то код вроде a.__setitem__(0, (a[0] += [2])) ?

vzzo ★★★
()
Ответ на: комментарий от anonymous

Догнал что ты имел ввиду. Да, пожалуй можно было бы добавить какой-нибудь __real_iadd__, который на уровне интерфейса гарантирует, что возвращаемое значение это исходный объект.

anonymous
()
Ответ на: комментарий от vzzo

Но зачем после выполнения += вызывать __setitem__?

Потому что __iadd__ может быть определен для немутабельных значений и результат надо присвоить.

anonymous
()
Ответ на: комментарий от alienclaster

Большинство нормальных языков работают по IEEE 754. Остальные не доросли.

Deleted
()
Ответ на: комментарий от PolarFox

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

Так дело том, что он становится стандартным языком для плугинов и расщирений.
при этом все говорят, тебе надо. ты и делай.
я понимаю такую позицию, но по факту то пишут на языке максимально недружественным к изменению кода.
Ну вот надо скажем мне чтобы приложение на заканчивало работу при закрытии окна а ожидало команду на его восстановление.
Задача и без того для меня за пределами опыта и знаний,
так тут ещё даже если я смогу понять как вписать цикл, то мне ещё и переформатировать код под него придётся.

А это значтит придётся вникать не только в программирование окон, а вообще полностью во всю работу прриложения.
И при чём до мельчайших деталей, иначе как мне понять где сколько табуляции сунуть.
Ну или пусть я даже пойму, где и сколько, но ведь это сколько работы которой я бы мог не делать?!
И енобходимость которой обосновывается только тем. что у языка такой синтаксис.

Хватит с меня того. что в неформатированном XML потихоньку перестаёшь понимать, кто, где и сто вообще происходит и делается. тоже вот приходится брать и форматировать. Но там хотябы это не навязывают и можно ораничится только тем, чтобы было читаемо, хотя бы сейчас и мне.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Ничего уберсложного в питоне нет. Такие конструкции, которые в теме показаны, используются лишь крабообразными.

Любой язык требует некоторого понимания. Без знания ты же к новому ЧПУ не полезешь ведь?

Deleted
()
Ответ на: комментарий от Deleted

Вопрос в объёме необходимых знаний.
Мне бы хотелось чтобы он стремился к минимум. иначе зачем мне писать плугин, а не собственное приложение?

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

иначе как мне понять где сколько табуляции сунуть.

Столько же, сколько у окружающего кода. В гедите если выделить кусок кода и нажать на tab, всё выделенное сдвинется вправо, если shift-tab, то влево.

PolarFox ★★★★★
()
Ответ на: комментарий от torvn77

Ты просто ленивая жопа. Базовый синтаксис и конструкции можно усвоить за 10 минут, ты только здесь уже больше наныл. Тот кто хочет ищет возможность, нехотящий — причину, такие дела.

anonymous
()
Ответ на: комментарий от torvn77

Это все только твои проблемы.

Deleted
()
Ответ на: комментарий от Deleted

def bar

Об этом сказано в документации. Выражение def генерирует новую функцию, а одинаковость функций определяется их адресом. Или ты хотел чтобы функции сравнивались по байт-коду, скопу и прочему?

true_admin ★★★★★
()
Ответ на: комментарий от torvn77

О сложности форматировании питоньего кода пишут только те кто на нём не пишет. Вообще, форматирование кода это наименьшая проблема при изучении ЯП.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Эх, и это говорит адепт языка в котором «1» + 2 == 3? Ты обычный тролль :(

Я процитировал не «dzen of perl», если что. И да, ad hominem выдает в тебе неспособность посмотреть правде в глаза. В правде нет ничего унижающего питон: да, его синтаксис чище, проще perl'a. Простой синтаксис, сложная семантика. Мы уже обсуждали это на примере типов данных.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.