Zanurkuj w Pythonie/Potęga introspekcji - podsumowanie
Wygląd
Podsumowanie
[edytuj]Program apihelper.py i jego wyjście powinno teraz nabrać sensu.
def info(object, spacing=10, collapse=1):
u"""Wypisuje metody i ich notki dokumentacyjne.
Argumentem może być moduł, klasa, lista, słownik, czy też łańcuch znaków."""
methodList = [e for e in dir(object) if callable(getattr(object, e))]
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
print "\n".join(["%s %s" %
(method.ljust(spacing),
processFunc(unicode(getattr(object, method).__doc__)))
for method in methodList])
if __name__ == "__main__":
print info.__doc__
A z tutaj mamy przykład wyjścia, które otrzymujemy z programu apihelper.py:
>>> from apihelper import info
>>> li = []
>>> info(li)
append L.append(object) -- append object to end
count L.count(value) -> integer -- return number of occurrences of value
extend L.extend(iterable) -- extend list by appending elements from the iterable
index L.index(value, [start, [stop]]) -> integer -- return first index of value
insert L.insert(index, object) -- insert object before index
pop L.pop([index]) -> item -- remove and return item at index (default last)
remove L.remove(value) -- remove first occurrence of value
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 append
Zanim przejdziemy do następnego rozdziału, upewnijmy się, że nie mamy problemów z wykonywaniem poniższych czynności:
- Definiowanie i wywoływanie funkcji z opcjonalnymi i nazwanymi argumentami
- Importowanie modułów za pomocą
import module
ifrom module import
- Używanie
str
do przekształcenia jakiejkolwiek przypadkowej wartości na reprezentację w postaci łańcucha znaków, a także używanieunicode
do przekształcania wartości na unikod. - Używanie
getattr
do dynamicznego otrzymywania referencji do funkcji i innych atrybutów - Tworzenie wyrażeń listowych z filtrowaniem
- Rozpoznawanie sztuczki
and
-or
i używanie jej w sposób bezpieczny - Definiowanie funkcji
lambda
- Przypisywanie funkcji do zmiennych i wywoływanie funkcji przez zmienną. Trudno jest to mocniej zaakcentować, jednak umiejętność wykonywania tego jest niezbędne do lepszego rozumienia Pythona. Zobaczymy bardziej złożone aplikacje opierające się na tej koncepcji w dalszej części książki.