Re: range() vs. xrange() (bylo RE: [python] dotaz-mřížka)
Ondřej Súkup
mimi.vx na seznam.cz
Středa Duben 6 17:33:20 CEST 2005
Petr Prikryl napsal(a):
> Ondřej Súkup napsal...
>
>>Petr Prikryl napsal(a):
>>[...]
>>
>>>Místo range(DELKA) je lepší používat xrange(DELKA).
>>
>>co se tyká budoucnosti moc ne ....
>>xrange je na seznamu to be removed
>>http://www.python.org/peps/pep-3000.html
>>tak ze pod budoucími verzemi pythonu nepouzitelne
>
>
> Dovolím si důrazně nesouhlasit. Stejný dokument
> říká, že range() má vracet iterátor. Jinými slovy
> to znamená, že se staré range() má zcela zrušit
> a xrange() se má přejmenovat na range().
>
> Uvedený dokument je navíc věnován "hypotetické
> budoucí verzi Pythonu" a slouží spíš pro diskusi
> a ověřování nápadů při dalším vývoji.
>
> Hlavním důvodem pro můj důrazný nesouhlas je
> rozdíl ve funčnosti (efektivnosti) range()
> a xrange(). Jméno není tak důležité. Přejmenování
> funkce se dá v Pythonu dosáhnout velmi snadno:
>
>
>>>>range
>
> <built-in function range>
>
>>>>xrange
>
> <type 'xrange'>
>
>>>>range = xrange
>>>>range
>
> <type 'xrange'>
>
>
> Tím už nyní dosáhnu toho, že se zahodí odkaz
> na zabudovanou funkci range() a pod tímto jménem
> se podstrčí xrange(). Funguje to ale jenom v daném
> (lokálním) prostoru jmen.
>
> Aby budoucí verze Pythonu neznemožnila používání
> starších programů, které používají xrange(), může
> provést něco takového (trochu chytřeji):
>
> def xrange():
> # print 'Varovani...'
> return range()
>
> To znamená, že všude, kde budu používat
> (v té době již nepodporovanou) funkci xrange(),
> bude potichu nahrazena použitím nové range().
> Jakmile to bude aktuální, dá se najevo
> změna trochu hlasitěji (naznačeno zakomentovaným
> printem).
>
> Petr
hello
Ted sem nasel v knize Zaciname programovat v jazyce Python vydane CP ze
rozdil xrange a range je .... range tvori seznam a xrange ne ale pri tom
je xrange silne pomalejsi ...
ahoj
Další informace o konferenci Python