Tipy pro >>>
Příkazová řádka Pythonu alias command line alias komand lajna alias shell alias konsole alias >>> je neobyčejně silná feature Pythonu. Můžeme na ní zkoušet vše, co v obyčejném programu, některé věci však daleko výhodněji. Můžeme tomu říkat "hraní si" s Pythonem, případně ladění.
Jaké všechny metody má můj objekt?
V Pythonu je objekt vše - číslo, řetězec, moduly, funkce, seznamy, ... Zastavme se třeba u seznamů. Pokud chceme vědět, co všechno můžeme se seznamem dělat, tj. jaké má všechny metody, můžeme se podívat do manuálu nebo si s ním pohrát na příkazovém řádku. Vyzkoušejte:
>>> znamky=[1,1,3,1,4,8] >>> dir(znamky) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli ce__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__gets lice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', ' __le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__r educe_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__ ', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'p op', 'remove', 'reverse', 'sort']
Všechny se dají použít způsobem: za znamky bude tečka a za tečkou jméno metody se závorkami s potřebnými parametry:
>>> znamky.append(1) >>> znamky.count(1) 4 >>> znamky.index(8) 5 >>> znamky.sort() >>> znamky [1, 1, 1, 1, 3, 4, 8]
Ještě jedna ukázka na řetězce:
>>> mesto="Praha" >>> dir(mesto) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__g t__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__ ', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', ' __rmul__', '__setattr__', '__str__', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha', 'isdi git', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lst rip', 'replace', 'rfind', 'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'split lines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill ']
Jaké všechny proměnné jsem použil?
Funkce dir() se dá použít i pro zjištění, které všechny proměnné, funkce nebo i moduly jsem doposud použil. Je zde ukázáno i praktické použití zjištěné funkce modulu time:
>>> x=10 >>> jmeno="John" >>> import time >>> boat=["one", "two", 3,"four"] >>> dir() ['__builtins__', '__doc__', '__name__', 'boat', 'jmeno', 'time', 'x'] >>> time <module 'time' (built-in)> >>> dir(time) ['__doc__', '__name__', 'accept2dyear', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime', 's truct_time', 'time', 'timezone', 'tzname'] >>> dir(time.localtime) ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__getattribute__ ', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '_ _reduce_ex__', '__repr__', '__self__', '__setattr__', '__str__'] >>> time.localtime <built-in function localtime> >>> time.localtime() (2005, 10, 2, 11, 22, 49, 6, 275, 1)
Ladění
Hrátky na příkazovém řádku se dají využít i k ladění programu. Mějme následující program:
kniha="HW a SW" posl=range(10) for i in posl: print i+kniha
Po jeho spuštění se objeví následující chybová hláška:
Traceback (most recent call last): File "programujte.py", line 5, in ? print i+kniha TypeError: unsupported operand type(s) for +: 'int' and 'str'
A my můžeme začít zkoumat, a následně opravovat svůj program:
>>> dir() ['__builtins__', '__doc__', '__file__', '__name__', 'i', 'kniha', 'posl', 'x'] >>> kniha 'HW a SW' >>> posl [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> i 0 >>> kniha*i '' >>> kniha*7 'HW a SWHW a SWHW a SWHW a SWHW a SWHW a SWHW a SW' >>>
Nápověda na příkazovém řádku
Často také dokážu zjistit i něco více, než jen pouhý výpis metod objektu. Jedná se v podstatě o velmi podobnou nápovědu, jako v manuálu, ale v textovém provedení:
>>> x=[5,4,2] >>> help(x) Help on list object: class list(object) | list() -> new list | list(sequence) -> new list initialized from sequence's items | | Methods defined here: | | __add__(...) | x.__add__(y) <==> x+y | [...] | reverse(...) | L.reverse() -- reverse *IN PLACE* | | sort(...) | L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*; | cmp(x, y) -> -1, 0, 1 | [...]
Extra
S výše uvedenými funkcemi dir() i help() můžete samozřejmě pracovat i v programu, takže si můžete vytvářet programy, které budou generovat metody vašich objektů nebo nápovědy k nim....
Závěr
Najdete-li něco zajímavého, co tu není, napište to sem.