× Aktuálně z oboru

SHIELD Experience Upgrade 7 – méně hledání a více zábavy [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]
Celá zprávička [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]

Python - tipy pro >>>

[ http://programujte.com/profil/120-pavel-kosina/ ]Google [ :5:?rel=author ]       [ http://programujte.com/profil/118-zdenek-lehocky/ ]Google [ ?rel=author ]       3. 10. 2005       14 537×

Příkazová řádka Pythonu alias shell alias konsole alias >>> je neobyčejně silná feature (součást) 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í.


Tipy pro >>>

Příkazová řádka Pythonu alias shell alias konsole alias >>> je neobyčejně silná feature (součást) 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']
>>> znamky.count(1)
3

dir() je funkce, která nám řekne o všech metodách, které má objekt v závorce. V našem případě tedy metody seznamu. Ty obyčejné (append, count,...) jsou až na konci. Ty, které mají dvě podtržítka (__) na začátku a na konci jsou systémové speciální metody, které se takto jak jsou sice dají použít, ale většinou se používají jinak, příjemněji:


>>> znamky.__add__([8])
[1, 1, 1, 3, 4, 8, 8]
>>> znamky + [8]
[1, 1, 1, 3, 4, 8, 8]
>>> znamky.__len__()
6
>>> len(znamky)
6
>>>

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. V ukázce také ukazuji konkrétní práci s jednou funkcí modulu time, kterou jsem tímto způsobem našel:


>>> 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:

x=10
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]
>>> x
10
>>> 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, na co jsem zapomněl, napište to pls do komentářů.

Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2005101601-python-tipy-pro/ ].