Argumenty funkcji Pythona (domyślne, słowo kluczowe i dowolne)

W Pythonie można zdefiniować funkcję, która przyjmuje zmienną liczbę argumentów. W tym artykule nauczysz się definiować takie funkcje za pomocą domyślnych, słów kluczowych i dowolnych argumentów.

Wideo: argumenty funkcji Pythona: pozycyjne, słowa kluczowe i domyślne

Argumenty

W temacie o funkcjach zdefiniowanych przez użytkownika nauczyliśmy się definiować funkcję i ją wywoływać. W przeciwnym razie wywołanie funkcji spowoduje błąd. Oto przykład.

 def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")

Wynik

 Cześć Monica, dzień dobry!

Tutaj funkcja greet()ma dwa parametry.

Ponieważ wywołaliśmy tę funkcję z dwoma argumentami, działa ona płynnie i nie otrzymujemy żadnego błędu.

Jeśli wywołasz to z inną liczbą argumentów, interpreter pokaże komunikat o błędzie. Poniżej znajduje się wywołanie tej funkcji z jednym argumentem i bez argumentów wraz z odpowiednimi komunikatami o błędach.

 >>> greet ("Monica") # tylko jeden argument TypeError: greet () brakuje 1 wymaganego argumentu pozycyjnego: „msg”
 >>> greet () # brak argumentów TypeError: greet () brakuje 2 wymaganych argumentów pozycyjnych: 'name' i 'msg'

Argumenty funkcji zmiennych

Do tej pory funkcje miały stałą liczbę argumentów. W Pythonie istnieją inne sposoby definiowania funkcji, która może przyjmować zmienną liczbę argumentów.

Poniżej opisano trzy różne formy tego typu.

Domyślne argumenty Pythona

Argumenty funkcji mogą mieć wartości domyślne w Pythonie.

Możemy podać wartość domyślną argumentowi za pomocą operatora przypisania (=). Oto przykład.

 def greet(name, msg="Good morning!"): """ This function greets to the person with the provided message. If the message is not provided, it defaults to "Good morning!" """ print("Hello", name + ', ' + msg) greet("Kate") greet("Bruce", "How do you do?")

Wynik

Cześć Kate, dzień dobry! Cześć Bruce, jak się masz?

W tej funkcji parametr namenie ma wartości domyślnej i jest wymagany (obowiązkowy) podczas połączenia.

Z drugiej strony parametr msgma domyślną wartość "Good morning!". Tak więc jest to opcjonalne podczas rozmowy. Jeśli podana zostanie wartość, nadpisze ona wartość domyślną.

Dowolna liczba argumentów w funkcji może mieć wartość domyślną. Ale kiedy już mamy argument domyślny, wszystkie argumenty po jego prawej stronie również muszą mieć wartości domyślne.

Oznacza to, że argumenty inne niż domyślne nie mogą występować po argumentach domyślnych. Na przykład, gdybyśmy zdefiniowali powyżej nagłówek funkcji jako:

 def greet (msg = "Dzień dobry!", imię):

Otrzymalibyśmy błąd jako:

 SyntaxError: argument inny niż domyślny następuje po argumencie domyślnym

Argumenty słów kluczowych w Pythonie

Kiedy wywołujemy funkcję z pewnymi wartościami, wartości te są przypisywane do argumentów zgodnie z ich pozycją.

Na przykład w powyższej funkcji greet(), gdy nazwiemy ją as greet("Bruce", "How do you do?"), wartość "Bruce"zostanie przypisana do argumentu nazwa i podobnie "How do you do?"do msg.

Python umożliwia wywoływanie funkcji za pomocą argumentów słów kluczowych. Kiedy nazywamy funkcje w ten sposób, można zmienić kolejność (pozycję) argumentów. Wszystkie następujące wywołania powyższej funkcji są prawidłowe i dają ten sam wynik.

 # 2 keyword arguments greet(name = "Bruce",msg = "How do you do?") # 2 keyword arguments (out of order) greet(msg = "How do you do?",name = "Bruce") 1 positional, 1 keyword argument greet("Bruce", msg = "How do you do?") 

Jak widać, możemy mieszać argumenty pozycyjne z argumentami słów kluczowych podczas wywołania funkcji. Musimy jednak pamiętać, że argumenty słów kluczowych muszą następować po argumentach pozycyjnych.

Posiadanie argumentu pozycyjnego po argumentach słów kluczowych spowoduje błędy. Na przykład wywołanie funkcji w następujący sposób:

 greet(name="Bruce","How do you do?")

Spowoduje błąd:

 SyntaxError: non-keyword arg po słowie kluczowym arg

Arbitralne argumenty w Pythonie

Czasami nie znamy z góry liczby argumentów, które zostaną przekazane do funkcji. Python pozwala nam poradzić sobie z tego rodzaju sytuacjami poprzez wywołania funkcji z dowolną liczbą argumentów.

W definicji funkcji używamy gwiazdki (*) przed nazwą parametru, aby oznaczyć ten rodzaj argumentu. Oto przykład.

 def greet(*names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print("Hello", name) greet("Monica", "Luke", "Steve", "John")

Wynik

 Hello Monica Hello Luke Hello Steve Hello John

Tutaj nazwaliśmy funkcję z wieloma argumentami. Te argumenty są pakowane w krotkę przed przekazaniem ich do funkcji. Wewnątrz funkcji używamy forpętli, aby odzyskać wszystkie argumenty.

Interesujące artykuły...