Zanurkuj w Pythonie/Argumenty opcjonalne i nazwane

Z Wikibooks, biblioteki wolnych podręczników.

Argumenty opcjonalne i nazwane[edytuj]

W Pythonie argumenty funkcji mogą posiadać wartości domyślne. Jeżeli funkcja zostanie wywołana bez podania pewnego argumentu, argumentowi temu zostanie przypisana jego domyślna wartość. Co więcej możemy podawać argumenty w dowolnej kolejności poprzez użycie ich nazw.

Poniżej przykład funkcji info z dwoma argumentami opcjonalnymi:

def info(object, spacing=10, collapse=1):

spacing oraz collapse są argumentami opcjonalnymi, ponieważ mają przypisane wartości domyślne. Argument object jest wymagany, ponieważ nie posiada wartości domyślnej. Jeżeli info zostanie wywołana tylko z jednym argumentem, spacing przyjmie wartości 10, a collapse wartość 1. Jeżeli wywołamy tę funkcję z dwoma argumentami, jedynie collapse przyjmuje wartość domyślną (czyli 1).

Załóżmy, że chcielibyśmy określić wartość dla collapse, ale dla argumentu spacing chcielibyśmy skorzystać z domyślnej wartości. W większości języków programowania jest to niewykonalne, ponieważ wymagają one od nas wywołania funkcji z trzema argumentami. Na szczęście w Pythonie możemy określać argumenty w dowolnej kolejności poprzez odwołanie się do ich nazw.

Przykład. Różne sposoby wywołania funkcji info
info(odbchelper)                     #(1)
info(odbchelper, 12)                 #(2)
info(odbchelper, collapse=0)         #(3)
info(spacing=15, object=odbchelper)  #(4)
  1. Kiedy wywołamy tę funkcję z jednym argumentem, spacing przyjmie wartość domyślną równą 10, a collapse wartość 1.
  2. Kiedy podamy dwa argumenty, collapse przyjmie wartość domyślną, czyli 1.
  3. Tutaj podajemy argument collapse odwołując się do jego nazwy i określamy wartość, którą chcemy mu przypisać. spacing przyjmuje wartość domyślną -- 10.
  4. Nawet wymagany argument (jak object, który nie posiada wartości domyślnej) może zostać określony poprzez swoją nazwę i może wystąpić na jakimkolwiek miejscu w wywołaniu funkcji.

Takie działanie może się wydawać trochę niejasne, dopóki nie zdamy sobie sprawy, że lista argumentów jest po prostu słownikiem. Gdy wywołujemy daną funkcję w sposób "normalny", 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ędziemy wykorzystywali tylko "normalne" wywołania funkcji, ale zawsze mamy możliwość bardziej elastycznego podejścia do określania kolejności argumentów.

Materiały dodatkowe[edytuj]