LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

Кстати, если я правильно понял, это также может быть использовано и как switch case, который некоторые так хотели завезти в Python

Да, я вечно забываю что в питоне нет даже switch

Во-первых:

try:
	{
	1: lambda: print("first"),
	2: lambda: print("second"),
	}[val]()
except KeyError:
	print("wrong")

Во-вторых, кто «хотели»? Я пишу уже почти год на JS, в котором «switch» есть с ES5.1, но у меня ни разу не возникала мысль «не, тут нужно вместо условий switch использовать». Конструкции «switch» нет места ни в питоне, ни в JS, потому что смысл ее (быстрый выбор из большого числа условий) потерян. Даже если не брать в рассмотрение оптимизацию, то в C/C++/Java/etc у switch есть функция, как у единственного удобного механизма записи большого низкоуровневого ветвления. Ничего этого не нужно в питоне и JS, где есть высокоуровневые базовые типы, где можно создавать лямбды, где можно засунуть обработчики в числовой/ассоциативный массив, причем, сделать это в одном месте, без необходимости объявлять функции отдельно и как-то передавать в них параметры.

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

Исходная версия byko3y, :

Кстати, если я правильно понял, это также может быть использовано и как switch case, который некоторые так хотели завезти в Python

Да, я вечно забываю что в питоне нет даже switch

Во-первых:

try:
	{
	1: lambda: print("first"),
	2: lambda: print("second"),
	}[val]()
except KeyError:
	print("wrong")

Во-вторых, кто «хотели»? Я пишу уже почти год на JS, в котором «switch» есть с ES5.1, но у меня ни разу не возникала мысль «не, тут нужно вместо условий switch использовать». Конструкции «switch» нет места ни в питоне, ни в JS, потому что смысл ее (быстрый выбор из большого числа условий) потерян. Даже если не брать в рассмотерние оптимизацию, то у switch есть функция, как у единственного удобного механизма записи большого низкоуровневого ветвления. Ничего этого не нужно в питоне и JS, где можно создавать лямбды, где можно засунуть обработчики в числовой/ассоциативный массив, причем, сделать это в одном месте, без необходимости объявлять функции отдельно и как-то передавать в них параметры.

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