Zanurkuj w Pythonie/Potęga introspekcji: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
mNie podano opisu zmian
Piotr (dyskusja | edycje)
Nie podano opisu zmian
Linia 143:
Kluczową funkcją wykorzystaną w <tt>info</tt> jest funkcja <tt>dir</tt>. Funkcja ta zwraca listę atrybutów i metod pewnego obiektu czyli, może to być moduł, funkcja, łańcuch znaków, lista, słownik... niemal wszystko.
 
=== '''Przykład 4.7. Wprowadzenie do <tt>dir</tt> ==='''
 
>>> li = []
Linia 159:
# <tt>d</tt> jest słownikiem, dlatego <tt>dir(d)</tt> zwróci listę nazw metod słownika. Co najmniej jednach z nich -- <tt>keys</tt> powinna wyglądać znajomo.
# Dzięki temu funkcja ta staje się interesująca. <tt>odbchelper</tt> jest modułem, tak więc dzięki <tt>dir(odbchelper)</tt> otrzymamy listę wszyskich „dzieci” zdefiniowanych w tym module, dołączając wbudowane atrybuty takie jak <tt>__name__</tt>, czy też <tt>__doc__</tt> i jakiekolwiek inne atrybuty i metody zdefiniowane przez nas. W tym przypadku <tt>odbchelper</tt> posiada tylko jedną, zdefiniowaną przez użytkownika metodę -- funkcję <tt>buildConnectionString</tt> opisaną w [[Python:Wbudowane typy danych|Rozdziale 2]].
 
Funkcja <tt>callable</tt> zwraca True, jeśli podany obiekt może być wywołany, a False w przeciwnym przypadku. Wykonywalne obiekty, włączając w to funkcje, metody klas i nawet same klasy. (Wiecej o klasach możemy przeczytać w [[Python:Obiekty i klasy|następnym rozdziale]].)
 
'''Przykład 4.8. Wprowadzenie do funkcji <tt>callable</tt>'''
 
>>> import string
>>> string.punctuation #(1)
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.join #(2)
<function join at 00C55A7C>
>>> callable(string.punctuation) #(3)
False
>>> callable(string.join) #(4)
True
>>> print string.join.__doc__ #(5)
join(list [,sep]) -> string
 
Return a string composed of the words in list, with
intervening occurrences of sep. The default separator is a
single space.
(joinfields and join are synonymous)
 
# Zaleca się, żeby funkcje z modułu string nie były używane (są w stanie „deprecated”) (chociaż wciąż wiele osób używa funkcji <tt>join</tt>), lecz moduł ten zawiera wiele przydatnych stałych jak np. <tt>string.punctuation<?tt>, który przechowuje wszystkie standardowe znaki przystankowe.
# Funkcja <tt>string.join</tt> łączy listę w tekst.
# <tt>string.punctuation</tt> nie jest wywoływalny, jest łańcuchem znaków. (Typ <tt>string</tt> posiada wywoływalne metody, lecz sam nie jest wywoływalny.)
# <tt>string.join</tt> jest wywoływalny, jest to funkcja biorąca dwa argumenty.
# Każdy wywoływalny obiekt może posiadać notkę dokumentacyjną. Używając funkcji <tt>callable</tt> na każdym atrybucie obiektu, możemy określić o których atrybutach będziemy mogli się czegoś dowiedzieć (metody, funkcje, klasy) i pominąć te (stałe itp.), o których się nic nie dowiemy.
 
{{ProstaNawigacja|