The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Python 3.10, opennews (??), 05-Окт-21, (0) [смотреть все]

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


1. "Выпуск языка программирования Python 3.10"  +14 +/
Сообщение от Аноним (1), 05-Окт-21, 07:25 
> Реализованы операторы "match" и "case"

Не прошло и 30 лет) уря

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

8. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от Ivan_83 (ok), 05-Окт-21, 07:43 
Странно что у них не было такой базовой возможности.
Ответить | Правка | Наверх | Cообщить модератору

38. "Выпуск языка программирования Python 3.10"  +9 +/
Сообщение от QwertyReg (ok), 05-Окт-21, 10:01 
А кто решил, что эта возможность - базовая? Без неё вполне обходились.
Ответить | Правка | Наверх | Cообщить модератору

79. "Выпуск языка программирования Python 3.10"  +2 +/
Сообщение от Аноним (79), 05-Окт-21, 13:08 
Обходиться можно и одним while.
Ответить | Правка | Наверх | Cообщить модератору

121. "Выпуск языка программирования Python 3.10"  +5 +/
Сообщение от Тот_Самый_Анонимус (?), 05-Окт-21, 17:52 
While? Зачем, когда есть if и goto?
Ответить | Правка | Наверх | Cообщить модератору

177. "Выпуск языка программирования Python 3.10"  –1 +/
Сообщение от Аноним (177), 06-Окт-21, 12:04 
jmpz хватит всем.
Ответить | Правка | Наверх | Cообщить модератору

190. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от Аноним (190), 06-Окт-21, 20:37 
Goto как раз в нем нет
Ответить | Правка | К родителю #121 | Наверх | Cообщить модератору

205. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Pupkin (??), 08-Окт-21, 08:57 
Или так


matching = {<value>: <response>, ... }
return matching.get(value, 'Something else')

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

52. "Выпуск языка программирования Python 3.10"  +2 +/
Сообщение от Аноним (52), 05-Окт-21, 11:03 
у них был elif
Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

58. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Аноним (58), 05-Окт-21, 11:49 
Python отличается от низкоуровневых языков.

В Python акцент сделан на поддержке сложных тыпов данных и операций над ними.

Оператор выбора в Python не нужен и очень вреден.

Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь". Оператор выбора заменен действием по выбору значения из словаря.

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

60. "Выпуск языка программирования Python 3.10"  +3 +/
Сообщение от Аноним (60), 05-Окт-21, 11:53 
Так там по-моему словарь вместе с матчем переписали на новую эффективную реализацию. В итоге матч эффективней ифов, не говоря уж о том что полезнее. Что такоего вредного? Более чистый код, более быстрый? Надо чтобы плохо было?
Ответить | Правка | Наверх | Cообщить модератору

77. "Выпуск языка программирования Python 3.10"  +5 +/
Сообщение от Псевдоним (??), 05-Окт-21, 13:03 
Но и сам питон становится более жирным, неоднородным, его становится тяжелее понимать (надо знать и элсифы и кейсы и через словари) и учить и сам интерпретатор питона теперь написать (и поддерживать) сложнее.
Про дзен питона на который давно забыли, если вообще когда-то помнили, ("должен существовать один и, желательно, только один очевидный способ сделать это") я и вовсе молчу.
Ответить | Правка | Наверх | Cообщить модератору

100. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от Простоникemail (ok), 05-Окт-21, 14:54 
Есть тут сермяжная правда. Даже простое elif окажется по количеству букв и строк короче swith/case/break в с. Код при этом остаётся вполне  читаемым.  Ну и реализация с помощью словаря имеет некоторый смысл в особо сложных случаях, когда условий выбора много и они требуют дополнительных проверок.

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

82. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Аноним (82), 05-Окт-21, 13:20 
> Python отличается от низкоуровневых языков.
> В Python акцент сделан на поддержке сложных тыпов данных и операций над ними.

Это самовосхвалительная туфта. Адепты примерно каждого языка такое о своём языке говорят.

> Оператор выбора в Python не нужен и очень вреден.

А это сектантсоке повторение объяснений гуру почему "всё хорошо", без какой-либо попытки критического анализа.

> Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь". Оператор выбора заменен действием по выбору значения из словаря.

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

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

91. "Выпуск языка программирования Python 3.10"  +/
Сообщение от вы про перл или питон сейчас (?), 05-Окт-21, 14:16 
ко-ко-ко-ко... вы про перл или питон сейчас?
Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

179. "Выпуск языка программирования Python 3.10"  +/
Сообщение от OpenEcho (?), 06-Окт-21, 14:21 
Пятоно-свитчу (до 3.10) посвящается

def pyatono_switch(human):
    aka_switch = {
        1: "Men",
        2: "Women",
        3: "Urod"
    }
    print aka_switch.get(human, "Hren ego znaet...")

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

124. "Выпуск языка программирования Python 3.10"  +2 +/
Сообщение от анонопитонист (?), 05-Окт-21, 18:03 
> Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь". Оператор выбора заменен действием по выбору значения из словаря.

Упоролся? Вот как словарь заменяет-то? Лямбды в него добавлять, которые тоже вроде ну такие были как минимум до последней пары версий (и это даже, возможно, и фича)

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

181. "Выпуск языка программирования Python 3.10"  +/
Сообщение от OpenEcho (?), 06-Окт-21, 14:23 
> Вот как словарь заменяет-то? Лямбды в него добавлять....

Пятоно-свитчу (до 3.10) посвящается

def pyatono_switch(human):
    aka_switch = {
        1: "Men",
        2: "Women",
        3: "Urod"
    }
    print aka_switch.get(human, "Hren ego znaet...")

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

183. "Выпуск языка программирования Python 3.10"  +/
Сообщение от анонопитонист (?), 06-Окт-21, 14:44 
>> Вот как словарь заменяет-то? Лямбды в него добавлять....
> Пятоно-свитчу (до 3.10) посвящается
> def pyatono_switch(human):
>     aka_switch = {
>         1: "Men",
>         2: "Women",
>         3: "Urod"
>     }
>     print aka_switch.get(human, "Hren ego znaet...")

Так а если нам действие сделать нужно? Различающееся в разных ветках.

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

184. "Выпуск языка программирования Python 3.10"  +/
Сообщение от OpenEcho (?), 06-Окт-21, 15:02 
>>> Вот как словарь заменяет-то? Лямбды в него добавлять....
>> Пятоно-свитчу (до 3.10) посвящается
>> def pyatono_switch(human):
>>     aka_switch = {
>>         1: "Men",
>>         2: "Women",
>>         3: "Urod"
>>     }
>>     print aka_switch.get(human, "Hren ego znaet...")
> Так а если нам действие сделать нужно? Различающееся в разных ветках.

result = getattr(some_module, aka_switch.get(human, "undefined"))()

some_module: должен иметь методы: Men,Women,Urod,undefined

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

187. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Аноним (82), 06-Окт-21, 16:03 
Переусложнённый нечитабельный отстой же получается. Модуль ещё отдельный городить, вместо того чтоб здесь и сейчас написать.

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

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

188. "Выпуск языка программирования Python 3.10"  +/
Сообщение от анонопитонист (?), 06-Окт-21, 16:12 
>[оверквотинг удален]
>>> def pyatono_switch(human):
>>>     aka_switch = {
>>>         1: "Men",
>>>         2: "Women",
>>>         3: "Urod"
>>>     }
>>>     print aka_switch.get(human, "Hren ego znaet...")
>> Так а если нам действие сделать нужно? Различающееся в разных ветках.
> result = getattr(some_module, aka_switch.get(human, "undefined"))()
> some_module: должен иметь методы: Men,Women,Urod,undefined

Имхо, выглядит кривее лесенки `if elif else`.

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

193. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от OpenEcho (?), 06-Окт-21, 21:50 
> Имхо, выглядит кривее лесенки `if elif else`.

100% согласен, а со switch-ем еще нагляднее, даже в шеллах и то есть...


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

141. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от Аноним (141), 05-Окт-21, 22:26 
> Оператор выбора в Python не нужен и очень вреден.

Потрудитесь обосновать.

> Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь".

В чём её развитость?

> Оператор выбора заменен действием по выбору значения из словаря.

Кем и когда заменён?

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

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

200. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от Zulu (?), 07-Окт-21, 16:08 
словарь не заменит match, потому что match позволяет структурное сравнение:

match alist:
  case [_, 'word2', *rest]: ...
  case ['word1', _, *rest]: ...

Через словарь такого не сделаешь.

Да, это иногда выглядит прямо по Борхесу https://ru.wikipedia.org/wiki/%D0%9A%D0%...) но иногда это надо.

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

201. "Выпуск языка программирования Python 3.10"  +/
Сообщение от n00by (ok), 07-Окт-21, 19:12 
Это называется НАМ (нормальный алгорифм Маркова). Третий вариант формализации после Машины Тьюринга и Стрелки Чёрча. Т.е. одного такого match достаточно для реализации алгоритмов, в отличие от словаря.
Ответить | Правка | Наверх | Cообщить модератору

222. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Аннон (?), 17-Окт-21, 18:50 
> Стрелки Чёрча

стреклу Пирса знаю, Чёрча - нет.

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

224. "Выпуск языка программирования Python 3.10"  +/
Сообщение от n00by (ok), 18-Окт-21, 14:45 
>> Стрелки Чёрча
> стреклу Пирса знаю, Чёрча - нет.

Да, спасибо. Правильно было бы написать Лямбда Чёрча. "Стрелка" это жаргон из-за распространённого синтаксиса:

"
Теперь посмотрим на константную функцию:

(λx.(λy.x))

Константная функция является функцией двух аргументов, поэтому наш терм принимает переменную x и возвращает другой терм функцию (λy.x) . Эта функция принимает y , а возвращает x. В Haskell мы бы написали это так:

\x -> (\y -> x)

Точка сменилась на стрелку, а лямбда потеряла одну ножку.
"
https://anton-k.github.io/ru-haskell-book/book/14.html

"
В: с каких пор js - чисто функциональный язык? )
О: С тех пор как ввели => Это стрелка чёрча со всеми вытекающими следствиями
"
https://telegrammy.net/group/nodejs_ru/page1104.htm#110357


Стрелками так же обозначается марковская подстановка. https://gsom.spbu.ru/images/cms/data/teoriya_algoritmov.pdf
поскольку писал о НАМ, получилось что получилось.

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

80. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от Аноним (82), 05-Окт-21, 13:08 
Возможность нужная и полезная, но никак не базовая. В большинстве популярных языков её до сих пор нет, в некоторые, например Java, постепенно, очень уж медленно, добавляют, в Kotlin когда-то обсуждали и решили, что "слишком сложно", так и не добавили.

Это я про pattern matching with deconstruction, если что, не про простой switch-case.

Но то, что в Python простого switch-case не было - это фейл, да.

Кстати, я надеюсь, этот новый match-case хоть значение возвращает, как в других языках?

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

139. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Аноним (79), 05-Окт-21, 21:50 
Через какую дырку он их будет возвращать?
Ответить | Правка | Наверх | Cообщить модератору

170. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Аноним (82), 06-Окт-21, 04:23 
Через такую же, как и в других языках. Например так:

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

Вот как в Scala делается (второй пример посмотрите):

https://docs.scala-lang.org/overviews/scala-book/match-expre...

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

194. "Выпуск языка программирования Python 3.10"  +/
Сообщение от Аноним (79), 07-Окт-21, 00:08 
Как в нормальных языках это делается, я знаю. Только по-нормальному - это не питонично.
Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск языка программирования Python 3.10"  +1 +/
Сообщение от Жироватт (ok), 05-Окт-21, 08:28 
Ну...да.
Учитывая развитие языка как языка proof of и прототипирования first
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

54. "Выпуск языка программирования Python 3.10"  –8 +/
Сообщение от Аноним (58), 05-Окт-21, 11:45 
Это большое зло для Python. Лично не буду использовать Python-3.10 и вам не советую.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

180. "Выпуск языка программирования Python 3.10"  +/
Сообщение от evocatus (ok), 06-Окт-21, 14:22 
Если вы думаете, что структурный pattern matching это оператор switch из сишечки, то вы вообще не понимаете о чём идёт речь. А вот те, кто хотя бы трогал функциональные языки типа Haskell и Clojure просекли фишку и сейчас радостно потирают руки.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

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

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




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

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