[python] Ot�zky kladen� Pythonem

Filip Štědronský regnarg na seznam.cz
Pondělí Červen 9 12:38:48 CEST 2008


On Po, čen 09, 2008 at 11:39:48 +0200, Pavel Kosina wrote:
> Vždy jde o to, pro koho to je určeno a jak je ten který daleko. Myslím, 
> že na absolutní začátek je input daleko vhodnější a krizové situace s 
> ním se mohou vysvětlit později, mnohem později.

Dobrý den
No jde o to, že input jako funkce je dost nelogická,
protže provádí dva zcela odlišné úkony — načtení řetězce
a jeho vyhodnocení jako výrazu. Myslím, že cílem většiny
vstupů nebývá vyhodnocení výrazu, takže nemá cenu
začínajícím plést hlavu. Navíc, není to dvakrát
nejrychlejší (což je tady jedno, ale stejně).

Jediný důvod, proč se ve skutečnosti input tak často
používá je, že v jednoduchých programech pracujeme
častěji s čísly než řetězci a input nám při prostém
zadání čísla jej vrátí. Ale "opravdu" si chceme z
funkce input() udělat read_number ? Navíc pro v původní
otázce zmíněný příklad zkoušení příkladů by šlo na prompt
1+1 napsat prostě 1+1 a vše by fungovalo.

Takže vážení, pokud chcete načítat čísla, použijte
int(raw_input()). Funkce input() stejně v Pythonu 3
zmizí. I pokud byste doopravdy potřebovali vyhodnotit
výraz ze vstupu a věděli, co děláte, použijte
eval(raw_input()), protože je to daleko čitelnější.
Funkce input() je archaický přežitek zachovávaný kvůli
zpětné kompatibilitě, a v žádném případě by se neměla
používat.

PS: V Pythonu 3 se bude raw_input jmenovat input(), je
    to hezčí. Původní input pak nahradí přehledné
    eval(input()).

-- 
regnarg --- http://rg.pretel.cz -- JID: regnarg na jabber.cz
V péči o štěstí druhých nacházíme své vlastní.   --Platón
Přátelství může trvat jedině mezi dobrými lidmi. --Cicero



Další informace o konferenci Python