[python] Deferred output
matesfila
matesfila na host.sk
Pátek Únor 12 10:44:20 CET 2010
No to ano, nejaké javistické predsudky mám, keď sa to tak dá nazvať. Ono
je to ale predsalen tak trochu iný spôsob uvažovania, v skriptivacom jazyku
oproti kompilovanému. Keď sa k tomu ešte pridá beztypovosť a moja snaha o
funkcionálny štýl programovania, tak je to v podste už úplne totálne iné
programovanie, ako v Jave :-)
Ale musím povedať, že teraz mi je to už ovela jasnejšie.
Matúš
On Thu, 11 Feb 2010 15:40:24 +0100, Hynek Fabian
<hynek.fabian na firma.seznam.cz> wrote:
> matesfila (čtvrtek 11 Únor 2010 14:47:31):
>> Funkcia f, ktorá využíva premennú x, môže byť definovaná ešte predtým,
>> ako
> Zapomen na definovani a zjistis ze to tak slozite neni. U podobne
> komplikovanych konstrukci muze byt obtizne domyslet dusledky, ale
vsechno
> to
> vyplyva z jednoduchych pravidel. Nejsou zadne deklarace - krome hrube
> kontroly
> syntaxe se vsechno provadi v jedine sekvenci (proto v pythonu nejsou
zadna
> makra). Kdyz program dojde ke konstrukci def, class nebo =, strci
vysledek
> do
> patricneho jmenneho prostoru. To je cele, jediny co je na tom slozity je
> zbavit se memu 'deklarace' a s tim spojene predstavy kompileru ktery
> predem
> 'zna' strukturu programu. Viz nasledujici primitivni uzavera:
> def foo():
> def bar():
> pass
> return bar
>
> Ve staticky kompilovanem jazyku je bar() jedina metoda ve vlastnim oboru
> platnosti. V pythonu neni zadna funkce bar() dokud nezavolam foo(), a
pak
> si
> ji musim predat pomoci return ven ze jmenneho prostoru foo() pokud ji
chci
> videt i jinde.
> A naopak, kdyz foo() zavolam dvakrat tak interpret dvakrat narazi na
> konstrukci "def bar():…" a vytvori dve ruzne (!) funkce
> a = foo()
> b = foo()
> a is b # False
>
>
>> Pre aké jazyky je vlastné takéto chovanie typické? Súvisí to s
>> beztypovosťou jazyka, alebo s tým, že je jazyk skriptovací, alebo s čím
>> vlastne?
> afaik se tomu rika pozdni vazba (late binding) a je to celkem bezna
> vlastnost
> skriptovacich jazyku (krome Javy ktera si hraje na kompilaci)
> U kompilovanych jazyku se to moc nevyskytuje, protoze kdyz kompiler nevi
> typ
> toho co kompiluje, tak toho moc nenakompiluje :-) ale neni to podminka -
> treba
> virtualni metody v C++ jsou castecne pozdni vazba (za cenu toho ze
nejsou
> tak
> uplne staticky kompilovane).
>
> uff to jsem se rozpesul, holt javisticky predsudky je potreba potirat
:-)
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
Další informace o konferenci Python