CodeGym /Kursy /Python SELF PL /Parametry funkcji

Parametry funkcji

Python SELF PL
Poziom 6 , Lekcja 3
Dostępny

9.1 Parametry vs argumenty

Początkującym często mylą się terminy „parametry” i „argumenty”, ale ich różnica jest istotna dla zrozumienia programowania funkcyjnego.

Parametry to zmienne, które są wymienione w definicji funkcji. Reprezentują one nazwy, które funkcja używa do odniesienia się do przekazywanych jej wartości. Parametry funkcji działają jako „wypełniacze” dla wartości, które będą używane w ciele funkcji. Kiedy definiujesz funkcję, opisujesz jej parametry.


def print_info(name, age):  # name i age — to parametry
    print(f"Name: {name}, Age: {age}")        

Argumenty to konkretne wartości lub dane przekazywane funkcji podczas jej wywołania. Argumenty są podstawiane w miejsca parametrów podczas wykonywania funkcji. Argumenty mogą być stałymi, zmiennymi, wyrażeniami, a nawet wynikami innych funkcji.


print_info("Alice", 30)  # "Alice" i 30 — to argumenty 

Rodzaje argumentów

  1. Argumenty pozycyjne: wartości są przekazywane w kolejności, w jakiej parametry są zdefiniowane.
  2. Argumenty nazwane: argumenty przekazywane funkcji z użyciem nazwy parametru, co pozwala na ich wymienienie w dowolnej kolejności po argumentach pozycyjnych.
  3. Argumenty domyślne: przy definiowaniu funkcji parametrom można przypisać wartości domyślne.

Argumenty pozycyjne już używasz, a argumenty nazwane i domyślne omówimy w następnych wykładach.

Różnica między parametrami a argumentami w Python pomaga zrozumieć, jak funkcje otrzymują i przetwarzają dane. To rozróżnienie jest ważne dla tworzenia elastycznych funkcji, które można łatwo dostosować do różnych warunków wywołania, czyniąc twój kod bardziej modułowym i ponownie używalnym.

9.2 Wartości domyślne

Argumenty domyślne w Python to mechanizm pozwalający funkcjom na wcześniejsze określenie predefiniowanych wartości dla jednego lub kilku parametrów. Ta możliwość sprawia, że wywołanie funkcji jest bardziej wygodne i elastyczne, ponieważ nie wymaga jawnego podawania wszystkich argumentów za każdym razem przy wywołaniu funkcji.

Definiowanie argumentów domyślnych

Argumenty domyślne są określane w definicji funkcji, gdzie przy deklarowaniu parametru wskazywana jest wartość, która będzie używana, jeśli przy wywołaniu funkcji argument nie zostanie przekazany:


def print_info(name, company='Unknown'):
    print(f"Name: {name}, Company: {company}")

W tym przykładzie company ma wartość domyślną 'Unknown'.

  • Uproszczenie wywołania funkcji: Funkcje z wieloma parametrami mogą być wywoływane z podaniem tylko najważniejszych argumentów.
  • Elastyczność: Funkcje można dostosować do różnych scenariuszy użycia bez zmieniania ich kodu.
  • Czytelność kodu: Jawne podawanie wartości domyślnych czyni kod samodokumentującym się.

Ważne niuanse

Niezmienność: Wartości domyślne dla argumentów powinny być niezmiennymi typami danych, takimi jak liczby, napisy czy krotki. Użycie zmiennych typów (np. list czy słowników) może prowadzić do niepożądanych efektów ubocznych, ponieważ zmiany w tych obiektach są zachowywane między wywołaniami funkcji.

Kolejność argumentów: Parametry z argumentami domyślnymi muszą następować po parametrach bez argumentów domyślnych w definicji funkcji.

Inny przykład:


def create_user(username, is_admin=False):
    if is_admin:
        print(f"User {username} is an admin.")
    else:
        print(f"User {username} is a regular user.")
        
create_user("Alice")  # is_admin == False
create_user("Bob", is_admin=True)  # is_admin == True
create_user("Karl", True)  # is_admin == True

Powyżej przedstawiono 3 sposoby wywołania funkcji z argumentem domyślnym: każdy z nich działa.

9.3 Przekazywanie parametrów po nazwie

Przekazywanie parametrów do funkcji po nazwie pozwala bardziej jasno określić, jakie wartości są przekazywane do których argumentów, poprawiając czytelność kodu i zmniejszając prawdopodobieństwo błędów związanych z nieprawidłową kolejnością argumentów.

Aby przekazać wartość parametru po nazwie, trzeba przy wywołaniu funkcji przypisać wartość do określonego parametru:


funkcja(parametr1 = wartosc, parametr2 = wartosc)

Ten sposób jest szczególnie przydatny przy pracy z funkcjami, które mają wiele parametrów lub parametry z wartościami domyślnymi.

Zalety przekazywania parametrów po nazwie

  • Jasność i czytelność: Podanie nazwy parametru przy jego wywołaniu czyni kod bardziej zrozumiałym dla innych programistów lub gdy wracamy do własnego starego kodu.
  • Elastyczność: Parametry mogą być przekazywane w dowolnej kolejności, co jest wygodne, gdy funkcja ma wiele parametrów.
  • Unikanie błędów: Nie ma potrzeby pamiętać kolejności parametrów funkcji, co zmniejsza prawdopodobieństwo błędów związanych z nieprawidłowym przekazywaniem wartości.

Przykłady użycia


def create_profile(name, age, job):
    print(f"Name: {name}")
    print(f"Age: {age}")
    print(f"Job: {job}")
        
create_profile(name = "John", age = 28, job = "Developer")

W tym przykładzie parametry są przekazywane nie po kolei, ale każdemu z nich jest jednoznacznie przypisana wartość, co czyni wywołanie funkcji bardziej elastycznym i zrozumiałym.

Przykład 2:

Nawiasem mówiąc, już wcześniej spotkałeś się z przekazywaniem parametrów po nazwie. W funkcji print(), pamiętasz?

Funkcje i ograniczenia

Parametry przekazywane po nazwie muszą następować po parametrach bez nazwy, jeśli takie istnieją w definicji funkcji.

Nie można używać tej samej nazwy parametru więcej niż raz przy wywołaniu funkcji.

Przekazywanie parametrów po nazwie to potężna możliwość Python, która czyni kod bardziej bezpiecznym i zrozumiałym, szczególnie w przypadkach użycia funkcji z wieloma argumentami lub opcjonalnymi wartościami.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION