Python - tipy pro >>>
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Python - tipy pro >>>Python - tipy pro >>>

 

Python - tipy pro >>>

Google       Google       3. 10. 2005       11 911×

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í.

Reklama
Reklama

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ářů.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Pavel KosinaAutor programuje v Pythonu.
Web    

Nové články

Obrázek ke článku DistrCut – optimalizace pomocí distribuované inteligence

DistrCut – optimalizace pomocí distribuované inteligence

Optimalizační systémy, které jsem dosud popisoval, se týkaly vždy optimalizace na jednom zařízení. Optimalizovalo se dělení tyčového materiálu na jedné pile, vypalování plošného materiálu na jednom plazmovém stroji, řídilo se tavení na jedné elektrické obloukové peci.

Ve výrobním procesu je však často nutné optimalizovat činnost celého výrobního úseku, kde je více různých objektů odlišného typu a koordinovat činnost těchto objektů k dosažení společného cíle, zpravidla kvality finálního výrobku. Řešení tohoto problému umožňuje distribuovaná inteligence.

Reklama
Reklama

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý