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,
spacingprzyjmie wartość domyślną równą10, acollapsewartość1. - Kiedy podamy dwa argumenty,
collapseprzyjmie wartość domyślną, czyli1. - Tutaj podajemy argument
collapseodwołując się do jego nazwy i określamy wartość, którą chcemy mu przypisać.spacingprzyjmuje 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.