Zanurkuj w Pythonie/Argumenty opcjonalne i nazwane: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m poprawa nawigacji
Piotr (dyskusja | edycje)
m poprawki, linki
Linia 1:
{{Podświetl|py}}
==Użycie argumentów opcjonalnych i nazwanych==
 
PythonW pozwalaPythonie argumentomargumenty funkcji mogą posiadać wartości domyślne. Jeżeli funkcja jestzostanie wywoływana bez argumentów,podania przypisywanepewnego argumentu, imargumentowi wartościtemu zdefiniowanezostanie jakoprzypisana domyślnedomyślna wartość. Co więcej, argumenty mogąmożemy byćpodawać określonew dowolnym porządku poprzez użycie ich nazw.
 
Poniżej przykład funkcji <tt>info</tt> z dwoma argumentami opcjonalnymi:
 
def info(object, spacing=10, collapse=1):
 
<tt>spacing</tt> oraz <tt>collapse</tt> są opcjonalneopcjonalnymi argumentami, ponieważ mają przypisane wartości domyślne. Argument <tt>object</tt> jest wymagany, ponieważ nie posiada wartości domyślnej. Jeżeli <tt>info</tt> jestzostanie wywoływanewywoływany tylko z tylko jednym argumentem, <tt>spacing</tt> przyjmujeprzyjmie wartości <tt>10</tt> a <tt>collapse</tt> wartość <tt>1</tt>. Jeżeli wywołamy tę funkcję z dwoma argumentami, tylko <tt>collapse</tt> przyjmuje wartość domyślną (w tym przypadku <tt>1</tt>).
 
PowiedzmyZałóżmy, że chceszchciałbyś określić wartość dla <tt>collapse</tt>, ale także chcesz przyjąć wartość domyślną dla argumentu <tt>spacing</tt> chciałbyś skorzystać z domyślnych argumentów. W większości języków taprogramowania sztuczkajest nieto uda sięniewykonalne, ponieważ będzieszwymusza zmuszonyto dood wywołanianas wywołanie funkcji z trzema argumentami. AleNa szczęście w Pythonie argumenty można określać poprzez ich nazwę, w jakiejkolwiek kolejności.
 
'''Przykład 4.4. Poprawne wywołania funkcji <tt>info</tt>'''
 
info(odbchelper) #(1)
Linia 18:
info(spacing=15, object=odbchelper) #(4)
 
# Z jednym argumentem, <tt>spacing</tt> przyjmuje wartość domyślną (równą <tt>10)</tt> a <tt>collapse</tt> wartość <tt>1</tt>.
# Z dwoma argumentami, <tt>collapse</tt> przyjmuje wartość domyślną, czyli <tt>1</tt>.
# Tutaj wywołujemy argument <tt>collapse</tt> podając jego nazwę i wartość, którą chcemy mu przypisać. <tt>spacing</tt> przyjmuje wartość domyślną, czyli w tym przypadku <tt>10</tt>.
# Nawet wymagany argument (jak <tt>object</tt> w tym przypadku, który nie posiada wartości domyślnej) może być określony poprzez swoją nazwę i może wystąpić na jakimkolwiek miejscu w wywołaniu funkcji.
 
To może być trochę niejasne dopóki nie zdasz sobie sprawy, że lista argumentów jest po prostu słownikiem. Gdy wywołujesz funkcje "normalnie", czyli bez podawania nazw argumentów, Python dopasowuje wartości do określonych argumentów w takiej kolejności w jakiej zostały zadeklarowane. Najczęściej będziesz wykorzystywał tylko "normalne" wywołania funkcji, ale zawsze masz możliwość bardziej elastycznego podejścia do określania kolejności argumentów.
 
{{infobox|tekst=Jedyną rzeczą, którą musisz zrobić by poprawnie wywołać funkcję, tojest określenie w jakikolwiek sposób wartości dla każdego ''wymaganego'' argumentu. Sposób i kolejność określania argumentów zależy tylko od Ciebie.}}
 
===== Dokumentowanie funkcji =====
* [http://www.python.org/doc/current/tut/tut.html Python Tutorial] omawia [http://www.python.org/doc/current/tut/node6.html#SECTION006710000000000000000 w jaki sposób domyślne wartości są określane], czyli co się stanie, gdy domyślny argument będzie listą lub też pewnym wyrażeniem.
 
<noinclude>