The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Гвидо ван Россум предложил включить в Python операторы для сопоставления с образцом"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Гвидо ван Россум предложил включить в Python операторы для сопоставления с образцом"  +/
Сообщение от opennews (??), 28-Июн-20, 09:49 
Гвидо ван Россум (Guido van Rossum) представил на рассмотрение сообществом черновик спецификации для реализации в  языке Python операторов для сопоставления с образцом (match и case).  Следует отметить, что предложения по добавлению операторов сопоставления с образцом уже публиковались в  2001 и 2006 годах (pep-0275, pep-3103), но были отвергнуты в пользу оптимизации конструкции "if ... elif ... else" для составления цепочек сопоставления...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=53248

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 28-Июн-20, 09:49   +20 +/
Не прошло и полвека…
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19, #205

2. Сообщение от Аноним (2), 28-Июн-20, 09:54   +1 +/
Регулярки-то можно будет запихнуть туда? Реальный юзкейс. xD

Но да, не хватало для счастья именно этого. Ну, среди прочего. Эх, ещё бы := в ф-строки пихать разрешили... Или это уже перебор?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3, #11, #96, #154

3. Сообщение от Аноним (2), 28-Июн-20, 10:00   –1 +/
Правда, как сахар для if не очень полезно, наверное. Лучше бы чем-нибудь полезным занимались.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #5, #7

4. Сообщение от Иваня (?), 28-Июн-20, 10:03   +9 +/
Да блин, в питоне синтаксис итак перегружен, столько всяких конструкций, за один день не разберёшься со всем, а он ещё хочет усложнить 😢
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

5. Сообщение от Васька (??), 28-Июн-20, 10:13   +4 +/
Вполне себе полезно, т.к. подобные конструкции через if выглядят не по питоновски. Одно из немногих за последнее время изменений делающих питон более питоном, остальное в другую сторону, по большей части.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #35

6. Сообщение от Аноним (6), 28-Июн-20, 10:15   +10 +/
Могу предложить Brainfuck, там простеиший синтаксис
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #44

7. Сообщение от Васька (??), 28-Июн-20, 10:27   +/
Скорей, конечно, надо читать: "предложенные выглядят более по питоновски", так правильно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #61, #101

8. Сообщение от Аноним (8), 28-Июн-20, 10:36   +6 +/
_ - не улучшит читаемость кода. Улучшит её default: как например в C#
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #14, #20, #24

9. Сообщение от Аноним (9), 28-Июн-20, 10:42   +15 +/
Это не по-питоновски. Чем менее понятно, что происходит, тем более питоновской является конструкция.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #12, #107

10. Сообщение от Аноним (12), 28-Июн-20, 11:01   +1 +/
Гвидо вместо того чтобы повелеть своим диктаторским решением, выставил на рассмотрение? Куда катится этот мир.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #13, #97

11. Сообщение от Аноним (11), 28-Июн-20, 11:05   +3 +/
>ещё бы := в ф-строки пихать разрешили

ловите наркомана.. надеюсь такие побочные эффекты никогда в язык не пролезут - жаль что в принципе это присваивание просочилось.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #16

12. Сообщение от Аноним (12), 28-Июн-20, 11:07   –1 +/
Да скоро до башевских реулярок так дойдем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #155

13. Сообщение от Sluggard (ok), 28-Июн-20, 11:10   +2 +/
Он уже не диктатор, и даже из Dropbox ушёл на пенсию. Ты всё проспал.
https://www.opennet.ru/opennews/art.shtml?num=48959
https://www.opennet.ru/opennews/art.shtml?num=51778
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #71

14. Сообщение от Аноним (11), 28-Июн-20, 11:11   –1 +/
дефолт еще хуже, потому что новое ключевое слово. понимаю - в шарпах об этом совсем не парятся, но в питоне стараются сделать еще и красиво(минимализм рулит) надеюсь else будет (для симметрии с try/for/if).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #65, #98

15. Сообщение от Anonymoustus (ok), 28-Июн-20, 11:16   +3 +/
Есть такие, кто сходили почитать pep-3103? В этих четырёх вариантах синтаксиса новой конструкции вся убогость Пихтона как на ладони. А еще Перл им, понимаешь, не нравится… :-)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #95

16. Сообщение от Аноним (2), 28-Июн-20, 11:21   +/
Ну так сейчас их в .format() класть приходится, было бы удобней и менее грязно сразу на месте. А так приходится отказываться от продвинутых эффективных строк. Нет, не жаль, такое присваивание позволяет писать более эффективные однострочники.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #17

17. Сообщение от Аноним (11), 28-Июн-20, 11:23   +/
это первый шаг в сторону перла имхо
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

18. Сообщение от Аноним (18), 28-Июн-20, 11:29   +2 +/
Почему просто switch не добавить? Если оно выглядит как switch, крякает как switch, то это switch.
Назвав конструкцию match, они и провоцируют вопрос, заданный выше, про регулярки.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #21, #22, #25, #36, #57

19. Сообщение от Аноним (19), 28-Июн-20, 11:34   –2 +/
> но были отвергнуты в пользу оптимизации конструкции "if ... elif ... else" для составления цепочек сопоставления.

Сначала героически отвергли, потом героически ввели... Ну и кто они после этого?!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #23

20. Сообщение от n00by (ok), 28-Июн-20, 11:38   +1 +/
_ традиционно используется в языках, где петтерн-матчинг имеется изначально.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #42

21. Сообщение от Аноним (19), 28-Июн-20, 11:40   +1 +/
Тоже сначала подумал, что наконец-то оператор регулярок сделали... Ан нет, сделали по пи... по питоновски, "никакулюдей", "яойсобенная".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

22. Сообщение от n00by (ok), 28-Июн-20, 11:41   +/
Вот настоящий match.


let eq_rat cr =
  match cr with
     ((_,0),(_,0)) ->  true
   | ((_,0),_) ->  false
   | (_,(_,0)) ->  false
   | ((n1,1), (n2,1)) when n1 = n2 -> true
   | ((n1,d1), (n2,d2)) when ((n1 * d2) = (n2 * d1)) -> true
   | _ -> false;;


let char_discriminate c =
  match c with
       'a' | 'e' | 'i' | 'o' | 'u' | 'y'
     | 'A' | 'E' | 'I' | 'O' | 'U' | 'Y'  -> "Vowel"
     | 'a'..'z' | 'A'..'Z' -> "Consonant"
     | '0'..'9' -> "Digit"
     |   _ -> "Other" ;;

https://caml.inria.fr/pub/docs/oreilly-book/html/book-ora016...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #28

23. Сообщение от Ordu (ok), 28-Июн-20, 11:41   +12 +/
> Сначала героически отвергли, потом героически ввели...

Они героически отвергли C-style свитч. А героически ввели Scala-style match.

> Ну и кто они после этого?!

Стратеги. Если бы они приняли C-style свитч тогда, а сейчас добавили бы match, то ортогональность фичей языка пошла бы лесом. И окультурить этот лес селективными вырубками не удалось бы из-за backward compatibility.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #31, #34, #50, #102, #118

24. Сообщение от Аноним (24), 28-Июн-20, 11:44   +5 +/
В Python даже для for и while есть else, логично использовать его и здесь.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

25. Сообщение от Аноним (24), 28-Июн-20, 11:46   +1 +/
Крякает он как раз как match, судя по выражению "case Point(x, y) if x == y", такое никакой switch провернуть не сможет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #26, #131

26. Сообщение от n00by (ok), 28-Июн-20, 11:49   –1 +/
> Крякает он как раз как match, судя по выражению "case Point(x, y)
> if x == y", такое никакой switch провернуть не сможет.

Спасибо, проглядел if.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

27. Сообщение от corvuscor (ok), 28-Июн-20, 11:56   +1 +/
А мне нравится, очень хорошо читаемая конструкция, я лично за.

Меня лично эти if-elif-else в питоне всегда бесили, предпочитаю вместо них словари, но это тоже адский костыль и не всегда удобнее.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #146

28. Сообщение от Урри (?), 28-Июн-20, 11:58   +2 +/
На тридцати языках: https://rosettacode.org/wiki/Pattern_matching
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #32

29. Сообщение от YetAnotherOnanym (ok), 28-Июн-20, 11:59   +4 +/
У меня, как и у многих, тоже возник вопрос "А где ты раньше был", но вроде бы штука удобная, м.б. лучше поздно, чем никогда? (Дисклеймер: не питонист ни разу)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #63

30. Сообщение от Аноним (30), 28-Июн-20, 12:03   +3 +/
> case Point():

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #60, #64

31. Сообщение от uchiya (ok), 28-Июн-20, 12:17   +1 +/
Ну да, а две конструкции по итогу иметь - бог не позволяет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #37, #51, #79, #93

32. Сообщение от n00by (ok), 28-Июн-20, 12:30   +1 +/
> На тридцати языках: https://rosettacode.org/wiki/Pattern_matching

Пример с инстанциацией шаблонов просто шикарен, зря что ли Александреску ушёл в D. :D

Полез в Википедию, был удивлён: в англоязычном варианте https://en.wikipedia.org/wiki/Pattern_matching
среди первых языков, где реализовано сопоставление я образцом (SNOBOL from 1962, Soviet language Refal from 1968 with tree-based pattern matching, SASL from 1976, NPL from 1977, and KRC from 1981)
указан РЕФАЛ, а в русскоязычном про него ничего нет (в РЕФАЛ через сопоставление реализуется вообще всё).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

34. Сообщение от Аноним (19), 28-Июн-20, 13:10   +1 +/
> ортогональность фичей языка пошла бы лесом

она и так пошла лесом, то, что делалось ифом, сейчас ещё и мачем.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #38

35. Сообщение от Аноним (35), 28-Июн-20, 13:11   –1 +/
Иногда словарь помогает. Но всё зависит от сравниваемых данных.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #62

36. Сообщение от коржик (?), 28-Июн-20, 13:11   +/
> Если оно выглядит как switch, крякает как switch, то это switch.

Не совсем.

match это по идее выражение, оно возвращает один из подошедших вариантов,

switch - это как правило стейтмент (поправьте, как правильно говорить), который ничего не возвращает, еще и проваливается сверху-вниз если break не поставить.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #99

37. Сообщение от Ordu (ok), 28-Июн-20, 13:12   +2 +/
> Ну да, а две конструкции по итогу иметь - бог не позволяет.

Ну да, примерно так и есть.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

38. Сообщение от Ordu (ok), 28-Июн-20, 13:22   +/
>> ортогональность фичей языка пошла бы лесом
> она и так пошла лесом, то, что делалось ифом, сейчас ещё и
> мачем.

Да. Но match удобнее на некоторых случаях. Это во-первых сокращение записи (попробуй вон тот пример с Point переписать на if/elif), во-вторых, match -- это специфический синтаксис, который легко детектируется глазом, после чего ты понимаешь что происходит дальше. Цепочка if/elif может развиваться как угодно, match x -- это как цепочка if/elif по значению x.

Если мы сравниваем switch и if/elif, то это сравнение будет выглядеть примерно так же, как сравнение match и if/elif. Точнее, на качественном уровне так же, а количественно выйдет иначе несколько: меньшее количество юзкейсов для switch, меньше экономия в размере сорца. То есть, switch может быть и имело смысл принять, при отсутствии match'а. Тут вопрос в той количественной планке полезности для новой фичи, которую для себя установили разработчики.

Но иметь в языке и switch, и match -- это совершенно не аргументируемая идея. match может всё то, что может switch, при этом switch будет не длиннее аналогичного match.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

39. Сообщение от Аноним (-), 28-Июн-20, 13:22   –3 +/
Может я что то в жизни не понимаю, но ООП для этого вроде и придумали что бы не пихать новый синтаксис, а создавать "новые" комманды на основе классов, для языка.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #40, #179

40. Сообщение от нона (?), 28-Июн-20, 13:31   +1 +/
Определенно не понимаешь, ООП придумали, чтобы книжки таким как ты продавать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39

41. Сообщение от Вы забыли заполнить поле Name (?), 28-Июн-20, 13:32   +/
> В отличие от оператора "switch", доступного в языках Си, Java и JavaScript,

JFI для JS уже очень давно висит аналогичное предложение https://github.com/tc39/proposal-pattern-matching

Ответить | Правка | Наверх | Cообщить модератору

42. Сообщение от Аноним (42), 28-Июн-20, 13:34   –1 +/
И очень зря.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #49

44. Сообщение от анонимно (?), 28-Июн-20, 13:47   –1 +/
В брейнфаке плохо реализовано ООП )
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #52, #78

45. Сообщение от ALex_hha (ok), 28-Июн-20, 13:48   +/
> Также вызывают вопросы внутренняя организация, основанная на трансляции новых выражений в байткод, аналогичный используемому для конструкций "if ... elif ... else", что не обеспечит желаемой производительности при обработке очень больших наборов сопоставлений.

думаю, тут дело в первую очередь про удобство, а не производительность. Ибо "if ... elif ... else" ацки неудобная. Очень не хватает switch/case

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #67, #151

48. Сообщение от Аноним (48), 28-Июн-20, 14:12   –1 +/
Хочет дотянуть функционал петона до уровня bash?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #138

49. Сообщение от n00by (ok), 28-Июн-20, 14:14   +/
Да... зрят в корень.))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

50. Сообщение от Аноним (50), 28-Июн-20, 14:18   +7 +/
> не удалось бы из-за backward compatibility.

Не забываем что разговор о питоне.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

51. Сообщение от Анон102010210 (?), 28-Июн-20, 14:21   +3 +/
1) А зачем засорять язык, если можно не засорять?
2) Бритва оккама
3) Вообще-то у белкового мозга есть лимит возможностей в том, сколько правил можно одновременно соблюдать и эффективно добиваться поставленных целей
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #149

52. Сообщение от Аноним (52), 28-Июн-20, 14:21   –1 +/
А оно там ваще есть?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #56, #69

53. Сообщение от Аноним (53), 28-Июн-20, 14:28   +8 +/
Лучше верни master/slave, идиотизм какой-то потакать 0.01% извращенцев и менять веками устоявшиеся конструкции.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #70

56. Сообщение от myhand (ok), 28-Июн-20, 14:45   +/
Есть, конечно.  Он же тьюринг-полный.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

57. Сообщение от myhand (ok), 28-Июн-20, 14:54   +1 +/
> Почему просто switch не добавить?

Потому что это не switch.  Читайте pep.

> Назвав конструкцию match, они и провоцируют вопрос, заданный выше, про регулярки.

Да, существуют граждане, закомящееся с языком как-то по basic-english словарю и ключевым словам...

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #76

59. Сообщение от Онаним (?), 28-Июн-20, 15:27   +1 +/
case 418 оставить, остальное не нужно
Ответить | Правка | Наверх | Cообщить модератору

60. Сообщение от Онаним (?), 28-Июн-20, 15:28   +2 +/
Это питон. Не ищите нормального синтаксиса там, где его нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30

61. Сообщение от Кондратий (?), 28-Июн-20, 15:28   +2 +/
В каком-нить экзотическом Парсер (Parser3/parser.ru) - конструкция switch - case/default почти 20 лет из коробки, и ооочень широко используется для опциального ветвления, без нее тяжко, пример в топике актуальный.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

62. Сообщение от Аноним (2), 28-Июн-20, 15:35   –1 +/
> Иногда словарь помогает. Но всё зависит от сравниваемых данных.

По-моему со словарём были проблемы с тормозами и перерасходом памяти. Последнее частично исправлялось различными костылями. Я уже не знаю что такое питоновый питон. Сначала привыкаешь к 1 питону, потом привыкаешь к постоянным изменениям, потом уже шпаришь со всеми новыми фичами -- ведь они стабильно повышают удобство и качество жизни. Решение оставить на плаву 2 питон в течение такого срока было совершенно фатальным, теперь нужно навёрстывать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #72

63. Сообщение от Вы забыли заполнить поле Name (?), 28-Июн-20, 15:48   +/
> У меня, как и у многих, тоже возник вопрос "А где ты раньше был",

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

64. Сообщение от Вы забыли заполнить поле Name (?), 28-Июн-20, 15:51   +/
> почему оно должно совпасть с любым другим значением не совсем ясно

Как я понимаю оно совпадает с произвольной точкой (в смысле не с (0, 0), (x, 0) или (0, y)). Любое другое значение - это _.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #166

65. Сообщение от Аноним (65), 28-Июн-20, 15:51   –1 +/
> в питоне стараются сделать еще и красиво

Субъективщина. Не считаю гвидобейсик "красивым".

> минимализм рулит

Тогда иди в Brainfuck.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #128

67. Сообщение от Аноним (19), 28-Июн-20, 15:59   –1 +/
> Ибо "if ... elif ... else" ацки неудобная.

30 лет с ифом жили, и тут - бац! - прям озарило...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

69. Сообщение от Аноним (19), 28-Июн-20, 16:03   +1 +/
ООП есть везде, где есть процедуры и данные. Главное, чтобы не развился ООП головного мозга.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52 Ответы: #94, #192

70. Сообщение от Аноним (65), 28-Июн-20, 16:06   –3 +/
Петончик как модный хайповый язык не может не потакать 0.01% извращенцев. Страдайте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #89

71. Сообщение от Sw00p aka Jerom (?), 28-Июн-20, 16:10   +/
В мавзолей ему пора.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

72. Сообщение от Васька (??), 28-Июн-20, 16:27   +1 +/
Питон это красивый ясночитаемый код, в первую очередь, для тех кому нужно. В этом сила этого языка - писать быстро, читать легко, даже чужое. Остальное либо производное от этого, либо является минусом.
Потому - более по-питоновски, по моему мнению, это все, что угодно в пользу этого факта. Последнее время конструкции языка усложняются и вообще местами напоминают натягивание совы на глобус, мне не сложно, мне непонятно нафига.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #77, #103

73. Сообщение от all_glory_to_the_hypnotoad (ok), 28-Июн-20, 16:29   –4 +/
Эта дичь по читаьельности ощутимо хуже if ..elif .. else. Лучше бы наконкец предложил ввести { } вместо yблюдочных отступов.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #88, #141

74. Сообщение от Xasd5 (?), 28-Июн-20, 16:59   +2 +/
> аналогичный используемому для конструкций "if ... elif ... else"

сэтого надо было начинать!

расходимся ребята

Ответить | Правка | Наверх | Cообщить модератору

75. Сообщение от Аноним (75), 28-Июн-20, 16:59   –1 +/
Очень перегруженный язык стал
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #82

76. Сообщение от Аноним (76), 28-Июн-20, 17:00   +/
Так уже получился.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

77. Сообщение от Аноним (2), 28-Июн-20, 17:05   –2 +/
> Питон это красивый ясночитаемый код, в первую очередь, для тех кому нужно.
> В этом сила этого языка - писать быстро, читать легко, даже
> чужое. Остальное либо производное от этого, либо является минусом.
> Потому - более по-питоновски, по моему мнению, это все, что угодно в
> пользу этого факта. Последнее время конструкции языка усложняются и вообще местами
> напоминают натягивание совы на глобус, мне не сложно, мне непонятно нафига.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72

78. Сообщение от draw1 (?), 28-Июн-20, 17:16   +/
> В брейнфаке плохо реализовано ООП )

По-моему, там просто отличное ООП! ))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #124

79. Сообщение от Z (??), 28-Июн-20, 17:35   +2 +/
Python этим то и хорош, что не тащить всякий мусор в виде дублирующих операторов!
Посмотрите что с С++ сотворили, чужие исходники читать трудновато.
Меньше операторов это главное что отличает современные языки вроде Go, Rust в результате читаемость чужих исходников резко повышается!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #92

80. Сообщение от Аноним (80), 28-Июн-20, 17:40   –3 +/
Еще бы Self добавили как алиас для имени класса
Ответить | Правка | Наверх | Cообщить модератору

81. Сообщение от Аноним (82), 28-Июн-20, 17:49   +1 +/
Если в 2020 году на Землю в довершение ко всему упадет метеорит я даже не удивлюсь.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #113, #115

82. Сообщение от Аноним (82), 28-Июн-20, 17:50   +1 +/
Ведь отсутствию switch всегда было объяснение. Но теперь он зачем-то понадобился еще и не такой как у всех.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75

84. Сообщение от Аноним (84), 28-Июн-20, 18:01   +1 +/
А зачем оно нужно то, кроме как для красивостей, если в конечном итоге это будет транслироваться в тот же if-elif?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #129

85. Сообщение от Аноним (85), 28-Июн-20, 18:11   +4 +/
> case 401|403|404:

стремно выглядит, пахнет undefined behavior'ом

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #87, #142

87. Сообщение от Аноним (19), 28-Июн-20, 19:00   +/
это даже не UB, а УГ
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85

88. Сообщение от Аноним (88), 28-Июн-20, 19:40   +2 +/
Языков со скобками полно на любой вкус, от криворожденных JavaScript и PHP до нормальных. Питон прекрасен отступами.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73 Ответы: #100, #111, #120, #140

89. Сообщение от Аноним84701 (ok), 28-Июн-20, 19:53   +/
> Петончик как модный хайповый язык не может не потакать 0.01% извращенцев. Страдайте.
>>>  предложил включить в Python операторы для сопоставления с
>> менять веками устоявшиеся конструкции.

Анонимы, как истинные анонимы, не могут просто взять и прочитать новость, а не придумывать и оспаривать что-то по ключевым словам заголовка?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70

90. Сообщение от Аноним (90), 28-Июн-20, 20:15   –4 +/
Не нужны они в питоне. Для сопостовления с образцом следует использовать оператор индексации __getitem__.
Ответить | Правка | Наверх | Cообщить модератору

91. Сообщение от srgazh (?), 28-Июн-20, 20:57   +/
Прикольно
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #165

92. Сообщение от rshadow (ok), 28-Июн-20, 22:22   –3 +/
> дублирующих операторов

На вскидку: elif, for/while

> Меньше операторов

Нет. Не операторов меньше. В go например есть и if и switch.
Уменьшают базовую бибилиотеку: никто не тащит в стандарт например парсинг cvs и т.д. Не потому что не могут, а потому что и сторонние разработчики хорошо справляются. Лучше сделать хороший пакетный менеджер, чем поддерживать зоопарк фичей.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79

93. Сообщение от rshadow (ok), 28-Июн-20, 22:25   +1 +/
Нафига две-то? Скриптовый язык, по определению, имеет "умные" операторы. А не "тупо" транслирует в машинный код.
Сделали бы сразу switch, а потом наворачивали на него поддержку таплов, регэкспы и прочее и прочее
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

94. Сообщение от rshadow (ok), 28-Июн-20, 22:30   +1 +/
Чисто теоретически ООП, это набор самоограничений, позволющий осиливать сложность ПО. Если нет классов, то можно их реализовывать например на уровне подключения файлов. Или придумать любой свод правил на том что есть =)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69

95. Сообщение от rshadow (ok), 28-Июн-20, 22:35   +1 +/
Perl можно во многом обвинять, но в синтаксисе он топовый. Все таки лингвист создавал.
Конечно если не писать специально "типичные программы на perl".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

96. Сообщение от Оно (?), 28-Июн-20, 22:55   –1 +/
Уже есть := конструкция доки читайте
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

97. Сообщение от пох. (?), 28-Июн-20, 23:09   +/
> Гвидо вместо того чтобы повелеть своим диктаторским решением,
> выставил на рассмотрение? Куда катится этот мир.

я надеюсь, ему велят катиться со своим очередным switch - "голым сували и будем сувать, вези еще elifов!"

хотя, попытка с '_' хороша своей полной нечитаемостью. Так что может в этот раз и прокатить.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #139

98. Сообщение от Александр (??), 28-Июн-20, 23:42   +1 +/
Минимализм - это к Lua. А тут попытка усидеть на двух стульях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #126

99. Сообщение от Александр (??), 28-Июн-20, 23:50   +/
Кстати, в каком-то языке я встречал возвращающий switch. Выглядело (условно) это как-то так:
int r = switch (op)
{
case '+': a + b;
case '-': a - b;
case '*': a * b;
case '/': a / b;
};
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #116

100. Сообщение от Александр (??), 28-Июн-20, 23:54   –2 +/
И ими же жутко не удобен
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88 Ответы: #198

101. Сообщение от vitalif (ok), 29-Июн-20, 00:17   +3 +/
"Добрый день, к вашим услугам питон-разработчик, слонёнок-тестер и мартышка-тимлид" (c)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

102. Сообщение от Аноньимъ (?), 29-Июн-20, 00:22   –4 +/
Насмешили!
Многоходовочка от Гвидо! Всех переиграл!

Питон это помойка некогерентного синтаксиса с семантикой бейсика.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #105

103. Сообщение от Аноньимъ (?), 29-Июн-20, 00:24   –1 +/
- "Питон это красивый ясночитаемый код"

Прекрати человек анекдот.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72 Ответы: #195

105. Сообщение от Ordu (ok), 29-Июн-20, 00:46   +1 +/
> Насмешили!

Я рад.

> Многоходовочка от Гвидо! Всех переиграл!

Нет. Многоходовочка -- это когда план был составлен априорно. Здесь же, ситуация иная, switch был отвергнут из общих соображений, а не потому, что кто-то планировал впоследствии добавить match.

> Питон это помойка некогерентного синтаксиса с семантикой бейсика.

Совершенно нерелевантный обсуждению кусок информации. Твоё отношение к python'у никому не интересно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #102 Ответы: #106

106. Сообщение от Аноньимъ (?), 29-Июн-20, 01:07   –2 +/
Секреты интриги расследования. Тонкое стратегическое мышление в развитии скриптов для домохозяек.

Мои бока.

Не знал что у Питона есть секта фанатиков в рунете которые на полном серьезе интересуются "полезной" "политинформацией" о тонкостях решений закулисами так сказать.

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

Ну и с чего вы взяли, что можете релевантность чего-либо определить? Ну будь вы хоть Гвидо этим, еще понятна была бы такая напыщенность. Но вот лично вы, никакого отношения к успехам питона не имеете.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #105 Ответы: #109

107. Сообщение от Аноньимъ (?), 29-Июн-20, 01:10   –1 +/
Этот коммент глаголит мудрость.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

109. Сообщение от Ordu (ok), 29-Июн-20, 01:39   +/
> Не знал что у Питона есть секта фанатиков в рунете которые на полном серьезе интересуются "полезной" "политинформацией" о тонкостях решений закулисами так сказать.
> Еще и инфантильное тыканье, вы студент? Или Школьник может? Не примите за оскорбление, а то многие на школьника обижаются почему-то. Это нормально ведь, в школе учиться. Только питон там зря преподают. Раньше паскалю учили.

Я бы встречно предположил, что студент тут ты: искать (и находить!) секретные группы людей интересующихся несуществующей "полезной" "политинформацией" -- это вообще, мне кажется, особенность интеллекта на определённых этапах развития. Многие интеллекты застревают на этой стадии на всю оставшуюся жизнь, но те кто постарше студенческого возраста успели уже набить шишек и научились держать при себе совсем уж безбашенные находки.

Можно я раскрою тебе глаза? Я до сегодняшнего дня не знал о том, что в python кто-то когда-то пытался протолкнуть switch. И о попытках протолкнуть match не слышал. И, если честно, если бы меня спросил кто вчера, есть ли в python'е switch или match я бы затруднился ответить, потому как python'ом я пользуюсь весьма эпизодически и поэтому не помню деталей. Но мнение по обсуждаемому вопросу я, тем не менее, имею: я его составил по результатам прочтения данной новости и диагонального листания некоторых ссылок из новости и комментов. Тут есть ссылки на обсуждение предложения внести switch -- и если ты глянешь туда, там нет никакой "политинформации", там чисто техническое обсуждение. Обсуждение match'а тоже не содержит в себе "политинформации". То есть "политинформация" является чистым и незамутнённым продуктом твоей фантазии, от которого ты бодро перепрыгиваешь к выводу о существовании несуществующей группы людей. Даже не замечая того, что вся эта твоя психическая деятельность протекает в выдуманной тобою Вселенной, существующей только в твоей голове.

> Ну и с чего вы взяли, что можете релевантность чего-либо определить?

Ой, ну это же легко. Ты перечитай тред. О чём он? Тред о принятии match и о предшествующем непринятии switch. И тут ты такой красивый пришёл трясти своим личным мнением о python'е.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106 Ответы: #127

110. Сообщение от Аноним (110), 29-Июн-20, 03:11   +/
Ну в Haskell паттерн мэтчинг удобный, кстати, я большой фанат. Как это хорошо ложится на питон, не уверен, на Питоне пишу очень мало, и если честно до конца не разобрался что да как
Ответить | Правка | Наверх | Cообщить модератору

111. Сообщение от Anonymoustus (ok), 29-Июн-20, 06:13   –2 +/
> Языков со скобками полно на любой вкус, от криворожденных JavaScript и PHP
> до нормальных. Питон прекрасен отступами.

И поэтому даже у авторов языка возникает четыре (!) варианта написания новой конструкции.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88 Ответы: #122

113. Сообщение от Anonymoustus (ok), 29-Июн-20, 06:15   –2 +/
> Если в 2020 году на Землю в довершение ко всему упадет метеорит
> я даже не удивлюсь.

Пксть падает на Москву или на Коммифорнию.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81

114. Сообщение от Аноним (114), 29-Июн-20, 06:22   –1 +/
Стремление к совершенству ... К Cи.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #143

115. Сообщение от sergey (??), 29-Июн-20, 06:45   +2 +/
Наверняка уже не один упал. Поищите в новостях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81

116. Сообщение от коржик (?), 29-Июн-20, 06:51   +/
> Кстати, в каком-то языке я встречал возвращающий switch. Выглядело (условно) это как-то
> так:

c#8

public static T RecursiveExample<T>(IEnumerable<T> sequence) =>
    sequence switch
    {
        System.Array { Length : 0}       => default(T),
        System.Array { Length : 1} array => (T)array.GetValue(0),
        System.Array { Length : 2} array => (T)array.GetValue(1),
        System.Array array               => (T)array.GetValue(2),
        IList<T> list                    => list[2],
        IEnumerable<T> seq               => seq.Skip(2).First(),
    };

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #99 Ответы: #125

117. Сообщение от Daemon (??), 29-Июн-20, 07:03   +1 +/
Ну раз хочет он это сделать - ну форкни ты крайнюю версию и добавь все это. Что другим мозги парить?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #119

118. Сообщение от Atterratio (ok), 29-Июн-20, 07:48   +2 +/
А можно для идиотов объяснить в чём принципиальное отличие? Я по коду особой разницы не вижу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #123, #132

119. Сообщение от Аноним (19), 29-Июн-20, 08:27   –1 +/
Дык в том-то и дело, что этим деятелям нравится мозги парить. Им не нужен результат, им нужен процесс пропихивания булшыта в мозги юзверей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #117

120. Сообщение от Аноним (19), 29-Июн-20, 08:35   –3 +/
Это какой-то цирк, запоминать, кроме синтаксиса, ещё и количество отступов у элементов конструкции... Мы что, черчением занимаемся по ГОСТу?!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88 Ответы: #144

122. Сообщение от Ан959н (?), 29-Июн-20, 08:40   –1 +/
Котам делать нечего, кроме как бубенчики вылизывать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111

123. Сообщение от Аноним (19), 29-Июн-20, 08:46   –3 +/
Они сами не могут объёснить, как 30 лет жили без мачи, а теперь вдруг ввели её себе в голову.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #118

124. Сообщение от Аноним (19), 29-Июн-20, 08:52   +/
Похоже, изучение ООП надо начинать с ассемблера. Вот тогда в мозгах будет правильный ООП. Как напишет хомячок на асме VMT, так сразу будет знать, что это такое.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #200

125. Сообщение от Аноним (19), 29-Июн-20, 08:56   –1 +/
ужас какой-то... кто это использует?!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #116 Ответы: #135

126. Сообщение от Аноним (11), 29-Июн-20, 09:37   –1 +/
>А тут попытка усидеть на двух стульях.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #98 Ответы: #130

127. Сообщение от Аноньимъ (?), 29-Июн-20, 09:38   –3 +/
Эк вас прёт.
Извините, нет абсолютно времени в подобной мути разбираться.
А отсутсвие чувства юмора и самокритики конечно беда страшная.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109 Ответы: #133

128. Сообщение от Аноним (11), 29-Июн-20, 09:40   +/
>Субъективщина

тут не спорю

мне кажется очевидный факт что чем меньше ключевых слов - тем лучше для языка при одинаковом наборе фичей. это и есть продуманность и согласованность их(фич) друг с другом

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65

129. Сообщение от Аноним (131), 29-Июн-20, 09:41   –1 +/
как и любой другой сахар, он нужен для красивостей/удобства разработчика. Во что он там транслируется мало кого интересует, кроме случая срача в комментах
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84 Ответы: #163

130. Сообщение от Аноньимъ (?), 29-Июн-20, 09:44   +/
Успех питона несвязан с техническими свойствами языка.
Он экономический и политический.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #126 Ответы: #137

131. Сообщение от Аноним (131), 29-Июн-20, 09:47   –1 +/
Это вообще синтаксический ад какой-то, честно говоря.
Для такого надо или ИЛИ пихать или не делать такое вообще.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

132. Сообщение от Ordu (ok), 29-Июн-20, 09:57   +2 +/
> А можно для идиотов объяснить в чём принципиальное отличие? Я по коду
> особой разницы не вижу.

   def whereis(point):
       match point:
           case Point(0, 0):
               print("Origin")
           case Point(0, y):
               print(f"Y={y}")
           case Point(x, 0):
               print(f"X={x}")
           case Point():
               print("Somewhere else")
           case _:
               print("Not a point")

C-style switch позволяет использовать в качестве переключателей лишь константы примитивных типов. Здесь же используются не константы и не примитивных типов. Здесь используются паттерны. Например, case Point(0,y), под этот паттерн подпадёт любой Point у которого x==0. Но мало того, match создаёт лексический биндинг: он связывает переменную y со значением point.y.

Каждый паттерн здесь (за исключением _), проверяет что point имеет тип Point, плюс какие-то дополнительные условия на значения x и y накладывает. switch так не умеет. if/else/elif позволяет такое сделать, но там получится мешанина вложенных if'ов.

затем:

   match point:
       case Point(x, y) if x == y:
           print(f"Y=X at {x}")
       case Point(x, y):
           print(f"Not on the diagonal")

демонстрируешь ещё одну фишку, доп. условия. Первый case сработает если point имеет тип Point и point.x == point.y. Обрати внимание, тут тоже происходит создание локальных переменных x и y, и они доступны в if'е.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #118

133. Сообщение от Ordu (ok), 29-Июн-20, 10:00   +/
> Эк вас прёт.
> Извините, нет абсолютно времени в подобной мути разбираться.
> А отсутсвие чувства юмора и самокритики конечно беда страшная.

Ну да, давай, демонстрируй нам свою способность уходить в кристаллизованный ad hominem, когда других аргументов придумать не удаётся. Попробуй научиться сливаться в cpaчах без ad hominem: очень полезное умение, особенно для студента.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #127 Ответы: #186

134. Сообщение от Аноним (135), 29-Июн-20, 10:33   +1 +/
Странно сравнивать Python с Си. Сравнивайте с Perl или C#, где подобное давно (или не очень давно) уже имеется.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #161

135. Сообщение от Аноним (135), 29-Июн-20, 10:37   –1 +/
Прикол же, чисто демонстрационный. В реальности действительно приятная вещь... знакомая, по сути, всем любителям функционального программирования. ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #125

136. Сообщение от бедный буратино (ok), 29-Июн-20, 11:12   +1 +/
это уже было у Грибоедова

"где, покажите нам, отечества отцы, которых мы должны принять за образцы"

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #160

137. Сообщение от Аноним (11), 29-Июн-20, 11:12   +1 +/
сильное заявление, требующие доказательства. хотел бы узнать более развернуто почему питон по-вашему популярен. да - у питона много недостатков, но остальные языки имеют их еще больше(не говорю за хаскели/эрланги и прочие кложуры, потому как не работал с ними плотно)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #130 Ответы: #145

138. Сообщение от Аноним (11), 29-Июн-20, 12:01   –1 +/
конечно, а то раньше-то он не был тьюринг полным
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

139. Сообщение от anonymous yet another (?), 29-Июн-20, 12:50   +1 +/
Я так понимаю, что '_' пересекается с распространённой
практикой использования '_' как локальной переменной?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #97

140. Сообщение от anonymous yet another (?), 29-Июн-20, 13:05   +/
Вот у меня такой вопрос: как интерпретируется ситуация
со смесью spaces/tabs и тем, что табуляция может
быть настроена на разный размер?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88 Ответы: #147

141. Сообщение от Аноним (88), 29-Июн-20, 13:12   +2 +/
Можно подумать что в языке без отступов не нужно делать отступы... Формально конечно не нужно, но такой код другим людям лучше не показывать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73 Ответы: #158, #193

142. Сообщение от Аноним (142), 29-Июн-20, 14:12   –1 +/
Там у них всего один возразил, а в ответ "ну, так же сделано в баше!". При этом в текущем пистоне все работает как положено

if 407 == 401|403|404:
  print("ok")

Как теперь запилить результат 1|2|3 в case? Самому каждый раз калькулировать или выделять переменную для этого? Что они там курят? Нет, я понял, что Гвидо это сделал для тупых веб-сайт-клепателей, но нельзя же на полном серьезе это допускать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #162

143. Сообщение от Аноним (-), 29-Июн-20, 15:01   +2 +/
> Стремление к совершенству ... К Cи.
>> match
>> case BinOp(op=Add()|Sub()):

Стремление к вспуку в лужу.
> совершенству ... К Cи.
> case foo: bar; break;
> совершенству

двойному вспуку.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #114

144. Сообщение от анонн. (?), 29-Июн-20, 15:07   +3 +/
> Это какой-то цирк, запоминать, кроме синтаксиса, ещё и количество отступов у элементов конструкции... Мы что, черчением занимаемся по ГОСТу?!
>> Leading whitespace (spaces and tabs) at the beginning of a logical line is used to compute the indentation level of the line, which in turn is used to determine the grouping of statements.

Скорее похоже на цирк опеннетных Знатоков в комментариях.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #120

145. Сообщение от Аноньимъ (?), 29-Июн-20, 15:13   +/
Хотелось бы.

Что скажите кстати насчёт Лавкрафта? Читали?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #137

146. Сообщение от Аноним (-), 29-Июн-20, 15:15   –5 +/
Самый лучший способ улучшить читаемость программ - нигде не использовать питон....
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

147. Сообщение от анонн. (?), 29-Июн-20, 15:21   +/
> Вот у меня такой вопрос: как интерпретируется ситуация со смесью spaces/tabs

https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
> Python 3 disallows mixing the use of tabs and spaces for indentation.

(хотя если очень сильно хочется, то "можно" - некоторые варианты интерпретатором не ловятся)
Цитируя Гвидо "we are all adults".

> и тем, что табуляция может быть настроена на разный размер?

И? Никто не заставляет в обязательном порядке конвертировать табы в spaces.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #140 Ответы: #152

148. Сообщение от Аноним (192), 29-Июн-20, 15:38   –2 +/
Прежде, чем принять для включения, нужно бы выяснить, не оскорбляют ли новые ключевые слова чьи-либо чувства. ;)
Ответить | Правка | Наверх | Cообщить модератору

149. Сообщение от Gogi (??), 29-Июн-20, 15:41   +1 +/
Категорически неверно. "Засорять" - это когда маловажные перделки и "сахарок" добавляются тоннами - как в C# 9.0; А отдельный свич и матч были бы неплохим разделением: когда прогер использует свич, он чётко знает - это БЫСТРО и используем сплошные константы - компилятор легче генерирует оптимальный код. Если это матч - компилер уже знает, надо долго и нудно сопоставлять. И это хорошо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

150. Сообщение от Anonimus (??), 29-Июн-20, 15:43   +2 +/
А как избежать конфликта с gettext?

import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print(_('This is a translatable string.'))

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #164

151. Сообщение от Anonim (??), 29-Июн-20, 16:06   –2 +/
Это тот switch, в котором практически для каждого case нужно рисовать break? Спасибо не надо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #156, #170

152. Сообщение от anonymous yet another (?), 29-Июн-20, 16:14   +/
>> Вот у меня такой вопрос: как интерпретируется ситуация со смесью spaces/tabs
> https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces

Ну вот ссылочку вы прислали, а на вопрос не ответили.
Я же не про "как мне жить --- с пробелами или табуляцией".

Как питон разруливает мешанину пробелов и табуляций?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #147 Ответы: #153, #190

153. Сообщение от анонн. (?), 29-Июн-20, 16:59   +1 +/
>>> Вот у меня такой вопрос: как интерпретируется ситуация со смесью spaces/tabs
>> https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
> Ну вот ссылочку вы прислали, а на вопрос не ответили.
> Я же не про "как мне жить --- с пробелами или табуляцией".

Какая буква в "disallows" вам не понятна?

> Как питон разруливает мешанину пробелов и табуляций?
>> TabError: inconsistent use of tabs and spaces in indentation

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #152 Ответы: #187

154. Сообщение от Sarcastic scutosaurus (?), 29-Июн-20, 18:05   +/
> Регулярки-то можно будет запихнуть туда? Реальный юзкейс.

Вот так хочешь?


for ($var) {
  /regex1/ ? do_something() :
  /regex2/ ? do_something_other() :
  default_action();
}

Так очень даже запросто. Только гвидобейсик придётся выкинуть…

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

155. Сообщение от Sarcastic scutosaurus (?), 29-Июн-20, 18:09   –1 +/
Опять какое-то школоло вылезло… Нет в баше регулярок. Никаких. И никогда не было.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #168

156. Сообщение от Аноним (156), 29-Июн-20, 18:17   +1 +/
Сделай switch, в котором не надо рисовать break. Но можно нарисовать fallthrough при необходимости. Ой, нет, так уже другие люди сделали…
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #151

158. Сообщение от Аноним (156), 29-Июн-20, 18:21   –1 +/
В языке со скобочками отступы может расставить (или исправить) форматтер. А в питончике хошь – не хошь, а считай пробелы сам.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #141 Ответы: #167

159. Сообщение от Аноним (159), 29-Июн-20, 18:22   +2 +/
создать инстанс для сравнения?? это не кабздец ли?

   match point:
       case Point(x, y) if x == y:
           print(f"Y=X at {x}")

мочить в сортире вас, питонщиков

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #178

160. Сообщение от Аноним (19), 29-Июн-20, 18:24   +/
> которых мы должны принять за образцы

Си. Plain Си. (с)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #136

161. Сообщение от Аноним (19), 29-Июн-20, 18:25   –1 +/
> где подобное давно

у вас опечатка в слове "*авно"

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #134 Ответы: #177

162. Сообщение от Аноним (19), 29-Июн-20, 18:29   +/
> так же сделано в баше!

Ну, я тогда лучше этот баш и буду использовать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #142

163. Сообщение от Аноним (19), 29-Июн-20, 18:29   –1 +/
30 лет как-то без сахара прожили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #129

164. Сообщение от Аноним (19), 29-Июн-20, 18:49   –2 +/
Это же питон, их не волнуют проблемы юзверей, на которых они смотрят с высокой колокольни.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #150

165. Сообщение от Аноним (19), 29-Июн-20, 19:02   –1 +/
прикольно в цирке, а тут вроде язык программирования... или уже не программирования...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91

166. Сообщение от Ordu (ok), 29-Июн-20, 19:24   +1 +/
Вопрос, как я понимаю в том, почему используется синтаксис Point(), а не Point(_, _).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #169, #191

167. Сообщение от Ordu (ok), 29-Июн-20, 19:37   +1 +/
Я не могу похвастся огромным опытом написания скриптов на пайтоне, ну может пяток скриптов строк по 500 написал, но мне ни разу не приходилось считать пробелы. Начинаю подозревать, что подсчёт пробелов в пайтоне -- это миф выдуманный хейтерами.

Единственное что мне пришлось дополнительно освоить для пайтона -- это как попросить emacs поменять отступ для блока целиком, но это две команды, дефолтом забинженные на "C-c C-l" и "C-c C-r". Но мне кажется, это не должно влиять, это ж просто автоматизация: вместо того, чтобы многократно тыкать <TAB> <DOWN> <TAB> <DOWN> ... и так перебирать все строки, можно выделить и сделать "C-C C-r". В любом случае ничего не надо считать.

Может если в блокноте редактировать, приходится считать? Расскажи нам, какой должен быть сетап рабочего места, чтобы пришлось считать пробелы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #158 Ответы: #172

168. Сообщение от Аноним (19), 29-Июн-20, 19:40   –1 +/
Господи, откуда вы лезете? А что делает оператор =~ в баше?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #155 Ответы: #171

169. Сообщение от Аноним (19), 29-Июн-20, 19:47   –1 +/
точно (_,_). Везде в питоне (_,_).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #166

170. Сообщение от Аноним (19), 29-Июн-20, 19:49   –1 +/
Начнёшь писать программы - поймёшь, почему где-то нужен break, а где-то - нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #151

171. Сообщение от Sarcastic scutosaurus (?), 29-Июн-20, 20:26   +1 +/
OMG, они и это туда запилили? Ладно, был неправ, прошу прощения.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #168

172. Сообщение от Аноним (156), 29-Июн-20, 20:35   –1 +/
> Я не могу похвастся огромным опытом написания скриптов на пайтоне, ну может пяток скриптов строк по 500 написал, но мне ни разу не приходилось считать пробелы. Начинаю подозревать, что подсчёт пробелов в пайтоне -- это миф выдуманный хейтерами.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #167 Ответы: #174, #175

174. Сообщение от Ordu (ok), 29-Июн-20, 20:56   +/
>> Я не могу похвастся огромным опытом написания скриптов на пайтоне, ну может пяток скриптов строк по 500 написал, но мне ни разу не приходилось считать пробелы. Начинаю подозревать, что подсчёт пробелов в пайтоне -- это миф выдуманный хейтерами.
> В своём коде и мне не приходилось, благо нормальным редактором пользуюсь. Но
> зато уж в чужом…

А, я понял. Сворачивай блоки просто и разворачивай. Тебе ведь не интересно количество пробелов само по себе, тебе интересно где какой блок заканчивается: если ты сворачиваешь блок, ты видишь его конец рядом с началом. Это с любым языком удобно, на самом деле.

> Видел даже в пакете одного дистрибутива патч,
> добавляющий в код пробел.

Один пробел? Кто-то в блокноте набирал? Строчки же равняются табом, а там кратно четырём пробелы ставит.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #172

175. Сообщение от Аноним84701 (ok), 29-Июн-20, 21:27   +1 +/
> В своём коде и мне не приходилось, благо нормальным редактором пользуюсь. Но зато уж в чужом… Видел даже в пакете одного дистрибутива патч, добавляющий в код пробел.

Угу. И то ли дело


if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
    goto fail;
    goto fail;

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #172

176. Сообщение от Аноним (88), 29-Июн-20, 21:48   –1 +/
Только первый пример понравился. Во втором создаются экземпляры того же класса для сравнения с образцом. Фу так делать. В третьем примере легко забыть поставить точку перед именем константы.
Ответить | Правка | Наверх | Cообщить модератору

177. Сообщение от Аноним (135), 29-Июн-20, 23:13   –1 +/
Проецируете комплексы, связанные с нехваткой денег? Может, лучше всё же к клиническому психологу сходить? В Москве есть бесплатная служба, может, и в других городах найдётся что-то подобное.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #161

178. Сообщение от Аноним (135), 29-Июн-20, 23:16   –2 +/
Хороший компилятор для простого класса (типа того же Point) такое должен соптимизировать до простого выделения памяти на стеке и записи в неё... Но я сильно не уверен, что это случай Python, да.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #159

179. Сообщение от Аноним (135), 29-Июн-20, 23:22   –1 +/
ООП придумали чтобы снизить порог вхождения. Объекты со свойствами и наследованием принять проще, чем непонятные регистры и слабо укладывающиеся в голове математика «функции».
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #189

184. Сообщение от Аноним (184), 30-Июн-20, 00:11   +/

  def whereis(point):
       match point:
           case Point(0, 0):
               print("Origin")
           case Point(0, y):
               print(f"Y={y}")
           case Point(x, 0):
               print(f"X={x}")
           case Point():
               print("Somewhere else")
           case _:
               print("Not a point")

   match point:
       case Point(x, y) if x == y:
           print(f"Y=X at {x}")
       case Point(x, y):
           print(f"Not on the diagonal")

Никак не могу понять почему в первом случае
           case Point():
а не Point(x, y)
и в это же время во втором
       case Point(x, y):
а не Point()
?

Верно ли что Point(x, y) == Point() ?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #185, #197

185. Сообщение от Аноним (19), 30-Июн-20, 00:42   +/
Это питон, детка, теперь тебе надо ещё кучу непонятностей синтаксиса запомнить.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #184

186. Сообщение от Аноньимъ (?), 30-Июн-20, 02:17   +/
Говорить о себе в третьем лице это клиника.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #133

187. Сообщение от anonymous yet another (?), 30-Июн-20, 03:47   –2 +/
>>>> Вот у меня такой вопрос: как интерпретируется ситуация со смесью spaces/tabs
>>> https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
>> Ну вот ссылочку вы прислали, а на вопрос не ответили.
>> Я же не про "как мне жить --- с пробелами или табуляцией".
> Какая буква в "disallows" вам не понятна?

Все. Позволять/непозволять --- это не питонье дело, а автора.

Питон может на это как-то реагировать. А может не реагировать.
Если он такое увидел, то как он реагирует?

По ссылке написана хрень, IMO: там написано "было бы хорошо, если
бы вы писали свой код хорошо".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #153 Ответы: #194

188. Сообщение от Аноним (-), 30-Июн-20, 07:52   –2 +/
Слушайтесь дядю ван Оппосума он плохого не посоветует. Новости плюс!
Ответить | Правка | Наверх | Cообщить модератору

189. Сообщение от Аноним (19), 30-Июн-20, 08:53   +1 +/
+5. А математики в своей голове хоть что-то уложить - могут?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #179

190. Сообщение от userd (ok), 30-Июн-20, 12:54   +/
Сразу видно «теоретика», задающего вопросы и ничего не делающего для самостоятельного ответа.
Цена ответа - три строки на python. Или Вы боитесь «оскоромиться»?

Держи, бедолага -
python2 - как попросишь,
python3 - однозначно «TabError: inconsistent use of tabs and spaces in indentation»

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #152 Ответы: #201

191. Сообщение от Вы забыли заполнить поле Name (?), 30-Июн-20, 15:08   +/
Да, странно. Особенно, учитывая, что конструктор Point требует 2 аргумента.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #166

192. Сообщение от Аноним (192), 30-Июн-20, 15:43   +/
А как на одних только процедурах и данных реализовать инкапсуляцию, наследование, полиморфизм?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69

193. Сообщение от all_glory_to_the_hypnotoad (ok), 30-Июн-20, 17:02   +/
Конечно, не нужно и это особенно заметно когда нужно поправить код на машине с ненастроенным текстовым редактором. Тем более скобками можно делать замыкание, а в ЯП на отступах такое невозможно. Отступы это самая большая ошибка в дизайне синтаксиса/грамматики языка общего назначения.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #141

194. Сообщение от анонн. (?), 30-Июн-20, 17:29   +/
>> Какая буква в "disallows" вам не понятна?
> Все. Позволять/непозволять --- это не питонье дело, а автора.

Cинтаксис и семантика в спеках ЯП это семантика и синтаксис именно ЯП, а не размышлизмов очередного комментатора "как оно должно быть на самом деле!".


> Питон может на это как-то реагировать. А может не реагировать.
> Если он такое увидел, то как он реагирует?

Если его перед этим покормить, то скорее всего никак. Если нанести код на мышь или кролика, то слопает с превеликим удовольствием. Даже если код будет на расте или хаскелле.

А ожидаемое поведение интерпретатора языка Python 3 вполне описано:
>> (хотя если очень сильно хочется, то "можно" - некоторые варианты интерпретатором не ловятся)
>> TabError: inconsistent use of tabs and spaces in indentation

Имеющий глаза прочитал бы давно.

> По ссылке написана хрень, IMO: там написано "было бы хорошо, если бы вы писали свой код хорошо".

Хрень написана в комментах, по ссылке краткая выжимка и разъяснение для тех, кто не хочет ковыряться в спеках:

https://docs.python.org/3/reference/lexical_analysis.html
> Indentation is rejected as inconsistent if a source file mixes tabs and spaces in a way that makes the meaning dependent on the worth of a tab in spaces; a TabError is raised in that case.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #187 Ответы: #202

195. Сообщение от dffdf (?), 01-Июл-20, 07:53   –1 +/
вопрос решите и обоснуйте решение
4/2(4-2)
а то развелось тут "специалистов по всему" лин
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #103 Ответы: #206, #208

196. Сообщение от Аноним (198), 01-Июл-20, 14:00   +/
я чот не понял, а чё такое E: ??? и зачем точка нужна в case .RED: ??? а так норм
Ответить | Правка | Наверх | Cообщить модератору

197. Сообщение от Аноним (198), 01-Июл-20, 14:04   +/
точно не скажу, но получается, что Point() - экзепляр класса, а Point(x, y) - экземпляр класса с конкретными параметрами
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #184

198. Сообщение от Аноним (198), 01-Июл-20, 14:11   +/
Может обоснованно ответишь? Или нужно догадаться, чем тебе отступы не угодили?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #100

199. Сообщение от Аноним (199), 01-Июл-20, 17:19   +/
На дворе шел 21-й век ...
Ответить | Правка | Наверх | Cообщить модератору

200. Сообщение от Урри (?), 02-Июл-20, 10:44   +/
Это на и сишечке сделать несложно. Зачем же из пушки по воробьям то стрелять?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #124

201. Сообщение от anonymous yet another (?), 02-Июл-20, 13:49   +/
Спасибо, о великий питоногуру-сан!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #190

202. Сообщение от anonymous yet another (?), 02-Июл-20, 14:01   +/
Вот, я вызвал раздражение светлоликих знатоков предмета. А что на самом деле имеем?

- для python2: ну, хрен знает...
- для python3: ругнётся ...
   Но: язык допускает i) spaces ii) tabs (визуально неразличимы!) но не смесь i) и ii);
   а пробелы (и табуляция) как разделитель отались...

Не, ну очень целостный и логичный язык после этого...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #194 Ответы: #203

203. Сообщение от Аноним (-), 02-Июл-20, 14:58   +/
> Вот, я вызвал раздражение светлоликих знатоков предмета.

Просто кто-то хотел с умным видом набросить на вентилятор, но получилось "как всегда" - вентилятор в неподходящий момент врубил реверс ...

> А что на самом деле имеем?
>  - для python2: ну, хрен знает...
>>  -t     Issue a warning when a source file mixes tabs and spaces for
>>              indentation in a way that makes it depend on the worth of a tab
>>              expressed in spaces.  Issue an error when the option is given twice.

*facepalm*
>  - для python3: ругнётся ...

*doublefacepalm*

>    Но: язык допускает i) spaces ii) tabs (визуально неразличимы!)
> но не смесь i) и ii);
>    а пробелы (и табуляция) как разделитель отались...

И сопельки не спешит утирать и кофе в постель не носит и вообще, что-то там про "взрослых людей пишут" хотя на опеннете анонимы писали что оно точно-точно для уровня детского сада - вот же гады и обманщики!

> Не, ну очень целостный и логичный язык после этого...

Когда не знаешь матчасти, но очень хочется набросить про питон чтобы быть "как все" - поной с умным видом о пробелах ...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #202 Ответы: #204

204. Сообщение от anonymous yet another (?), 02-Июл-20, 16:08   +/
>> Вот, я вызвал раздражение светлоликих знатоков предмета.
> Просто кто-то хотел с умным видом набросить на вентилятор, но получилось "как
> всегда" - вентилятор в неподходящий момент врубил реверс ...

Это точно, от вас именно это и летит...

>[оверквотинг удален]
> *facepalm*
>>  - для python3: ругнётся ...
> *doublefacepalm*
>>    Но: язык допускает i) spaces ii) tabs (визуально неразличимы!)
>> но не смесь i) и ii);
>>    а пробелы (и табуляция) как разделитель отались...
> И сопельки не спешит утирать и кофе в постель не носит и
> вообще, что-то там про "взрослых людей пишут" хотя на опеннете анонимы
> писали что оно точно-точно для уровня детского сада - вот же
> гады и обманщики!

Спасибо за наставления, взрослый человек! И вам тоже не хворать.


>> Не, ну очень целостный и логичный язык после этого...
> Когда не знаешь матчасти, но очень хочется набросить про питон чтобы быть
> "как все" - поной с умным видом о пробелах ...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #203

205. Сообщение от Vkni (ok), 04-Июл-20, 23:01   +/
Да, всего 10 лет осталось - ML в 79м придумали.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

206. Сообщение от Аноньимъ (?), 18-Июл-20, 02:21   +/
> вопрос решите и обоснуйте решение
> 4/2(4-2)
> а то развелось тут "специалистов по всему" лин

Ответ - синтаксическая ошибка, внезаптные скобки после числа.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #195

207. Сообщение от warus (??), 01-Авг-20, 11:12   +/
очень не хватало, редиска.
вопрос на повестке давно стоял.
видно слишком высокий, плохо слышит, долго доходит
Ответить | Правка | Наверх | Cообщить модератору

208. Сообщение от Аноньимъ (?), 26-Авг-20, 16:25   +/
> вопрос решите и обоснуйте решение
> 4/2(4-2)
> а то развелось тут "специалистов по всему" лин

У вас невалидный ввод. Неожиданные символ "(" после "2"

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #195


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру