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