Питонасты....
Jul. 7th, 2019 11:16 pmВсплыло щас в одной дискуссии:
Ну, вы поняли, да? Это вам не просто сайд-эффекты, тут трава (или грибы) гораздо забористей.
Я не знал до сего момента, например. Ну, тем меньше причин любить пыхтон....
$ python Python 2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> def func(a, lst=[]): ... lst.append(a) ... return lst ... >>> print(func(1)) [1] >>> print(func(2)) [1, 2]
Ну, вы поняли, да? Это вам не просто сайд-эффекты, тут трава (или грибы) гораздо забористей.
Я не знал до сего момента, например. Ну, тем меньше причин любить пыхтон....
no subject
Date: 2019-07-07 07:40 pm (UTC)no subject
Date: 2019-07-07 07:42 pm (UTC)В проклинаемом всеми Perl'е аналогичные случаи были хотя бы документированы в документации, а не где-то в best practices на просторах интернетов.
no subject
Date: 2019-07-08 07:54 am (UTC)no subject
Date: 2019-07-08 10:49 am (UTC)На подобный прикол нарваться не просто легко, а очень легко, достаточно представить на месте foo и bar осмысленные названия, например:
def appendDir(dir, dirList=[])....
no subject
Date: 2019-07-08 02:08 pm (UTC)Это именно что сайд-эффекты объявления и использования функции через задницу.
Во-первых, объявление пустого списка в объявлении функции. Что это? Зачем? В каком таком мануале по погромированию сказано, что это так можно и нужно?
Во-вторых, если функция принимает два параметра (и у тебя нет полиморфизма), а ты его вызываешь с одним, то ты сам себе злобный буратино.
Если написать по-человечески:
def func(a):
lst=[]
lst.append(a)
return lst
print(func(1))
print(func(2))
То всё работает как надо. А тут, извините, явный пример GIGO (garbage in, garbage out).