Zanurkuj w Pythonie/Argumenty opcjonalne i nazwane

Z Wikibooks, biblioteki wolnych podręczników.

[edytuj] Argumenty opcjonalne i nazwane

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.

Porada Jedyną rzeczą, którą musimy zrobić by poprawnie wywołać funkcję jest 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 nas.


[edytuj] Materiały dodatkowe