Názor k článku Perličky: úvod do referencí od anonym - Odpovím teď jenom na ten 4. bod. Ta...

  • Článek je starý, nové názory již nelze přidávat.
  • 24. 2. 2008 11:32

    bez přezdívky
    Odpovím teď jenom na ten 4. bod. Ta implicitní hodnota parametru, kterou pranýřuje Václav Haisman, se konstruuje v okamžiku vytváření funkce a ne pokaždé znovu při jejím volání. To má takový efekt, že seznam z daného příkladu se používá při každém volání znovu - pokud samozřejmě člověk ten parametr nevyplní explicitně. Takže ta implicitní hodnota má chování statické lokální proměnné v C. V případě, že chceme v Pythonu implicitně pracovat s prázdným seznamem, namísto [] použijeme None a není s tím žádný problém. Mně toto chování přijde konzistentní, protože [] je jenom syntaktický cukr pro list() a jako pythonista když vidím list, čekám, že sekonstrukce hned provede. Opožděné provádění kódu jako třeba v MetaOCamlu je určitě příjemná vlastnost, ale Python jím zkrátka nedisponuje. S immutable daty to tedy souvisí tak, že jako implicitní hodnota parametru se muttable v zásadě nepoužívají a dávají se tam jenom "konstanty". Ve jiných jazycích se to dělá podobně a ještě jsem neslyšel názor, že jsou proto implicitní hodnoty parametrů "nepoužitelné".

    Pokud jde o podtržítka, kdo sleduje vývoj Pythonu, ten ví, že magické metody přibývají snad s každou novou verzí. Určitě by bylo pro vývojáře nemilé, pokud by měli nadefinovanou nějakou metodu, jejíž název se v další verzi zalíbí vývojářům Pythonu a následkem té kolize bude objekt v některých situacích vykazovat podivné chování nebo házet výjimky kvůli odlišnému počtu parametrů. Ano, Python jiný prostředek nenabízí. Jiné jazyky však nenabízejí ani tento.