A Python interpreter
Az egyik kedvenc dolgom a pythonban az az interpreter. Segítségével igen gyorsan ki lehet próbálni kódrészleteket, modulokat, sőt én számológépnek is azt szoktam használni - egy-két terminál mindig nyitva van nálam :)
Az interpreter - azaz parancsértelmező - a python paranccsal indítható, feltéve, hogy az elérési út tartalmazza a python telepítés könyvtárát is. A megjelenő három "nagyobbmint" jel jelzi, hogy az értelmező a parancsunkra vár:
$ python Python 2.6.5 Type "help", "copyright", "credits" or "license" for more information. >>> 1 + 1 2 >>> 2**100 1267650600228229401496703205376L >>>
Kilépni a Ctrl-D kombinációval lehet (Windows alatt Ctrl-Z, ha jól tudom), ha az nem segít, akkor a quit() parancs kiadása segíteni fog. A Ctrl-C-vel csak az aktuális parancs futását tudjuk megszakítani. (Illetve egy KeyboardInterrupt "kivételt" - exception - küldünk vele, de erről majd később.)
Amint látható számológépként egyszerűen használható, és nagyon nagy számokat is kezel (a ** operátor a hatványozás, hipphopp kiszámolta a kettő századik hatványát - az L betű a szám végén a long típusra utal, python 3-ban már nincsenek így megkülönböztetve az egész számok).
Ha PYTHONSTARTUP környezeti változóba beállítjuk egy python file nevét, akkor az a python interpreter minden interaktív használata elején lefut (azaz akkor nem, ha paraméterként egy filet adunk meg neki). Pl:
$ cat ~/.pythonrc import sys sys.ps1 = "py> " print "Helyzet?" $ export PYTHONSTARTUP=~/.pythonrc $ python Python 2.6.5 Type "help", "copyright", "credits" or "license" for more information. Helyzet? py> 1+1 2 py>
Persze a béna üdvözlőüzeneten és a prompt átállításán kívül akár értelmes dolgokat is lehet itt csinálni :)
Végezetül megemlíteném még az IPython projectet, ami a python interpreter shell egy fajta kibővítése, feljavítása, érdemes kiprobálni.
Posted
by
Szerintem nincs érv, hogy miért ne az IPython értelmezőt használja bárki. Pont az azonnal kipóbálhatóságban nyújt pótolhatatlan segítséget.
nekem erezhetoen lassabban indul ipython, mint a sima (ez mondjuk akkor problema, ha valami modult hegesztek, es azt csak ugy tudom ujratolteni, ha kilovom az interpretert), de kb igazad van, sokkal kenyelmesebb
Nem lehet újratölteni az egyszer már behúzott fájlt? Irb alatt két sorból megvan :
Ez a python "hibaja" (illetve hat design decision), egy mar betoltott modult nem lehet "ujratolteni", az import a mar betoltott modul objektumot emeli be a nevterbe, igy ha ket kulonbozo modulbol hasznalnal egy harmadikat, akkor azt nem tolti be ketszer, csak egyszer, illetve biztos, hogy ugyanazt a verziot hasznaljak majd mindketten. Ilyen szempontbol a modulok pythonban kvazi singletonok.
Mindenfele trukkos ugyeskedessel meg lehet szabadulni toluk, ha pontosan tudod, hogy mely modulok hivatkoztak arra a konkretra, nincs keresztbehivatkozas, es nehany bolygo is megfeleloen all egyutt, de veszelyes dolog ilyennel kiserletezni.
(Azt csak zarojelben merem ideirni, hogy egyesek irnak olyan modulokat, amik elso betolteskor "inicializaljak" magukat, es mar az import alkalmaval csinalnak valamit, ami nagyon csunya dolog, mint allapotgepnek hasznalni egy singletont.)
Ha installalva van az IPython (sudo pip install ipython) akkor a django automatikusan azt hasznalja. (python manage.py shell)
Ujra lehet tolteni mar betoltott modulokat a reload paranccsal.
Eredmes megnezni a bPython-t is !