shithon 2

Jul 08, 2021 02:52

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

Как, оказывается, связываются свободные переменные в питоновских лямбдах!? По ссылке? По значению? Мимо! ПО ИМЕНИ и SCOPE !!!! То есть вот это работает:

>>> i=3 >>> add=lambda x:i+x >>> add(3) 6 >>> i=[1,2] >>> add([3]) [1,2,3]

По неопытности можно себе как- ( Read more... )

программизм, терминальное

Leave a comment

Comments 18

eddy_em July 8 2021, 08:21:36 UTC
Там нет возможности конкретизировать: передаешь ты данные в функцию по ссылке (указателем) или копированием. Как вообще таким поделием можно пользоваться?
Я уж молчу, что там нет типов данных.
Ну, а отступы вместо вменяемых begin/end или фигурных скобочек - вообще ...

Reply

ex0_planet July 8 2021, 08:29:32 UTC
Ссылки, сейчас уже везде и всегда во всех языках имена биндятся к ссылкам. Кроме C и его потомства. И если бы лямбды захватывали по ссылке, то 'i=3' в моём примере осталась бы внутри лямбды, а i=[1,2,3] просто связалась бы с новым объектом.

Типы данных там есть, просто они динамические - Эдик, не позорься!

> type('0')
class 'str
> type(0)
class 'int

Reply

eddy_em July 8 2021, 09:12:30 UTC
> Типы данных там есть, просто они динамические
Это означает, что их там нет!
Не ЯП, а говна кусок!..

Reply

ex0_planet July 8 2021, 09:15:58 UTC


>>> '3'+3
Traceback (most recent call last):
File "", line 1, in
TypeError: can only concatenate str (not "int") to str
>>> 3+'3'
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Reply


Leave a comment

Up