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

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
mNie podano opisu zmian
Robwolfe (dyskusja | edycje)
Nie podano opisu zmian
Linia 2:
==Użycie argumentów opcjonalnych i nazwanych==
 
W Pythonie argumenty funkcji mogą posiadać wartości domyślne. Jeżeli funkcja zostanie wywoływanawywołana bez podania pewnego argumentu, argumentowi temu zostanie przypisana jego domyślna wartość. Co więcej, argumenty możemy podawać w 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ą opcjonalnymi 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> zostanie wywoływanywywołana tylko z jednym argumentem, <tt>spacing</tt> przyjmie 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>).
 
Załóżmy, że chciałbyś określić wartość dla <tt>collapse</tt>, ale dla argumentu <tt>spacing</tt> chciałbyś skorzystać z domyślnychdomyślnej argumentówwartości. W większości języków programowania jest to niewykonalne, ponieważ wymuszawymagają toone od nas wywołaniewywołania funkcji z trzema argumentami. Na 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>'''
Linia 20:
# 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łujemypodajemy argument <tt>collapse</tt> podającpoprzez jego nazwę i określamy 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.