Zanurkuj w Pythonie/Potęga introspekcji: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Zdzichobot (dyskusja | edycje) m poprawa nawigacji |
m poprawki |
||
Linia 1:
{{Podświetl|py}}
W tym rozdziale dowiesz się o jednej z właściwości Pythona
== Nurkujemy ==
Zacznijmy od kompletnego, działającego programu. Przeglądając kod na pewno rozumiesz już niektóre jego fragmenty. Przy niektórych liniach znajdują się liczby w komentarzach
▲W tym rozdziale dowiesz się o jednej z właściwości Pythona: '''introspekcji'''. Jak już wiesz, wszystko w Pythonie jest obiektem a introspekcja to kod, którego zadaniem jest obserwacja innych modułów i funkcji w pamięci jako obiektów, pobieranie informacji o nich oraz operowanie nimi.
'''Przykład 4.1. <tt class="lang-none">apihelper.py</tt>'''▼
▲Zacznijmy od kompletnego, działającego programu. Przeglądając kod na pewno rozumiesz już niektóre jego fragmenty. Przy niektórych liniach znajdują się liczby w komentarzach. Linie te wytłumaczyliśmy już w [[Programowanie:Python:Twój pierwszy program|rozdziale drugim]]. Nie przejmuj się, jeżeli nie rozumiesz reszty programu. Właśnie zaczniemy się go uczyć.
▲Przykład 4.1. apihelper.py
def info(object, spacing=10, collapse=1): #(1) (2) (3)
"""Drukuje metody i dokumentacje.
Zastosowanie dla modulow, klas, list, slownikow lub lancuchow znakow."""
methodList = [method for method in dir(object) if callable(getattr(object, method))]
Linia 18 ⟶ 19:
print info.__doc__
# Ten moduł ma jedną funkcję <tt>info</tt>.
# Funkcja <tt>info</tt> posiada
# Kod wewnątrz funkcji jest [[../Wcięcia kodu|wcięty]].
# [[../Testowanie modułów|Sztuczka]] z <tt>if __name__</tt> pozwala wykonać programowi coś użytecznego, kiedy
# [[../Testowanie modułów|Wyrażenie <tt>if</tt>]] wykorzystuje <tt>==</tt> (dwa znaki równości),
Funkcja <tt>info</tt>
'''Przykład 4.2. Proste zastosowanie <tt class="lang-none">apihelper.py</tt>'''
>>> from apihelper import info
Linia 41 ⟶ 42:
sort L.sort([cmpfunc]) -- sort *IN PLACE*; if given, cmpfunc(x, y) -> -1, 0, 1
Domyślnie wynik jest formatowany tak, by był łatwy do odczytania.
Przykład 4.3. Zaawansowane użycie apihelper.py▼
▲'''Przykład 4.3. Zaawansowane użycie <tt class="lang-none">apihelper.py</tt>'''
>>> import odbchelper
>>> info(odbchelper)
Linia 57:
<noinclude>
{{ProstaNawigacja|
poprzart=
poprz=Podsumowanie|
spis=
nastart=
nast=Użycie argumentów opcjonalnych i nazwanych}}
|