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.