Zanurkuj w Pythonie/Argumenty opcjonalne i nazwane
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.
info
info(odbchelper) #(1)
info(odbchelper, 12) #(2)
info(odbchelper, collapse=0) #(3)
info(spacing=15, object=odbchelper) #(4)
- Kiedy wywołamy tę funkcję z jednym argumentem,
spacing
przyjmie wartość domyślną równą10
, acollapse
wartość1
. - Kiedy podamy dwa argumenty,
collapse
przyjmie wartość domyślną, czyli1
. - 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
. - 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.
![]() |
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. |
Materiały dodatkowe
[edytuj]- Python Tutorial omawia 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.