[personal profile] ex0_planet
Всплыло щас в одной дискуссии:
$ 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]


Ну, вы поняли, да? Это вам не просто сайд-эффекты, тут трава (или грибы) гораздо забористей.

Я не знал до сего момента, например. Ну, тем меньше причин любить пыхтон....

Date: 2019-07-07 07:40 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Нехило. Научно объяснить как-то затрудняюсь.

Date: 2019-07-08 07:54 am (UTC)
From: [personal profile] russiandesman
Где блин ты такое находишь? Я к тому, что довольно давно использую питон, видел разного, за многое можно и руки писателям пооторвать, не суть. Но вот на такие моменты думаю можно нарваться только если специально искать (из ненависти к питону, да :)).

Date: 2019-07-08 02:08 pm (UTC)
From: [identity profile] nlothik.livejournal.com
> Это вам не просто сайд-эффекты

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

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

Если написать по-человечески:

def func(a):
lst=[]
lst.append(a)
return lst

print(func(1))
print(func(2))

То всё работает как надо. А тут, извините, явный пример GIGO (garbage in, garbage out).

Profile

ex0_planet

April 2023

S M T W T F S
      1
234567 8
910111213 1415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 25th, 2026 11:36 am
Powered by Dreamwidth Studios