← Back to course

Funkcje: ponowne używanie kodu

Funkcje: ponowne używanie kodu

Witaj z powrotem.

W poprzedniej lekcji nauczyłeś się słowników.

Twoje programy nauczyły się przechowywać dane strukturalne przez klucze i wartości.

Pisałeś rzeczy takie jak:

user = {
    "name": "Anna",
    "age": 25,
    "city": "Rome"
}

Bardzo dobrze.

Teraz twoje programy mogą przechowywać dane ze znaczeniem.

Nie tylko losowe wartości unoszące się jak zagubione balony.

Ale teraz mamy kolejny problem.

Co jeśli musimy używać tego samego kodu wiele razy?

Na przykład:

print("Hello, Anna!")
print("Welcome to the program.")
print("Have a nice day!")

Potem później:

print("Hello, Marco!")
print("Welcome to the program.")
print("Have a nice day!")

Potem jeszcze raz:

print("Hello, Sofia!")
print("Welcome to the program.")
print("Have a nice day!")

To działa.

Ale jest powtarzalne.

A powtarzalny kod jest niebezpieczny.

Bo pewnego dnia musisz coś zmienić.

Potem musisz zmienić to w pięciu miejscach.

Potem zapominasz o jednym miejscu.

Potem pojawia się bug.

Potem kawa staje się paliwem awaryjnym.

Funkcje rozwiązują ten problem.

Funkcje pozwalają ponownie używać kodu.

Piszesz kod raz.

Potem wywołujesz go zawsze, kiedy go potrzebujesz.

Bardzo użyteczne.

Bardzo czyste.

Bardzo Python.

Czego się nauczysz

W tej lekcji nauczysz się:

Pod koniec tej lekcji twój kod będzie bardziej uporządkowany.

Mniej powtórzeń.

Więcej struktury.

Mniej katastrof z kopiuj-wklej.

Miejmy nadzieję.

Funkcje są jednym z największych kroków w programowaniu.

Przed funkcjami kod jest długą drogą.

Po funkcjach kod staje się miastem ze znakami.

Nadal można się zgubić.

Ale przynajmniej są znaki.

Czym jest funkcja?

Funkcja to blok kodu, którego można używać wiele razy.

Definiujesz ją raz.

Potem możesz jej używać wiele razy.

Przykład:

def say_hello():
    print("Hello!")

To tworzy funkcję o nazwie:

say_hello

Ale samo stworzenie funkcji jej nie uruchamia.

Aby uruchomić funkcję, musisz ją wywołać:

say_hello()

Pełny przykład:

def say_hello():
    print("Hello!")

say_hello()

Output:

Hello!

Funkcja jest jak mała maszyna.

Budujesz ją raz.

Potem naciskasz przycisk.

Przyciskiem jest wywołanie funkcji.

Bardzo technicznie.

Bardzo przycisk.

Twoja pierwsza funkcja

Utwórz plik:

functions.py

Napisz:

def greet():
    print("Hello from a function!")

greet()

Uruchom:

python functions.py

albo:

python3 functions.py

Output:

Hello from a function!

Ta linia tworzy funkcję:

def greet():

Ta linia należy do funkcji:

    print("Hello from a function!")

Ta linia wywołuje funkcję:

greet()

Ważne:

def tworzy funkcję.
Wywołanie funkcji ją uruchamia.

Jeśli tylko zdefiniujesz funkcję, ale nigdy jej nie wywołasz, nic się nie stanie.

Python jest uprzejmy.

Nie uruchamia funkcji, jeśli go nie poprosisz.

W przeciwieństwie do niektórych ludzi, którzy dają rady bez pytania.

Składnia funkcji

Podstawowa funkcja wygląda tak:

def function_name():
    code_here

Przykład:

def show_menu():
    print("1. Add item")
    print("2. Show items")
    print("q. Quit")

Części:

def              zaczyna definicję funkcji
function_name    nazwa funkcji
()               nawiasy
:                zaczyna ciało funkcji
wcięcie          kod wewnątrz funkcji

Dwukropek jest ważny.

Wcięcie jest ważne.

Python nadal bardzo troszczy się o wcięcia.

Bardzo.

Python widzi wcięcia jak plan budynku.

Jeśli wcięcie jest złe, budynek się zawala.

Cyfrowo.

Wywoływanie funkcji wiele razy

Funkcje można wywoływać wiele razy.

Przykład:

def say_hello():
    print("Hello!")

say_hello()
say_hello()
say_hello()

Output:

Hello!
Hello!
Hello!

Funkcja została napisana raz.

Ale uruchomiła się trzy razy.

To jest siła funkcji.

Bez kopiowania tego samego kodu wszędzie.

Tworzysz jeden blok wielokrotnego użytku.

Potem używasz go, kiedy trzeba.

Bardzo czysto.

Bardzo cywilizowanie.

Bardzo inaczej niż folder o nazwie final_final_REAL_final.py.

Dlaczego funkcje są użyteczne

Funkcje pomagają:

Bez funkcji program może stać się jedną długą rzeką kodu.

Straszną rzeką.

Z funkcjami możesz podzielić program na mniejsze części.

Przykład:

pokazać menu
pobrać wybór użytkownika
dodać zadanie
pokazać zadania
zamknąć program

Każda część może stać się funkcją.

To sprawia, że kod jest łatwiejszy do zrozumienia.

Twój przyszły ty ci podziękuje.

Może.

Przyszły ty często jest zmęczony.

Wcięcie w funkcjach

Kod wewnątrz funkcji musi być wcięty.

Poprawnie:

def greet():
    print("Hello!")

Źle:

def greet():
print("Hello!")

Python pokaże:

IndentationError

Wcięte linie należą do funkcji.

Przykład:

def greet():
    print("Hello!")
    print("Welcome!")

print("This is outside the function.")

Tutaj:

print("Hello!")
print("Welcome!")

należą do funkcji.

Ta linia:

print("This is outside the function.")

nie należy do funkcji.

Wcięcie decyduje o przynależności.

Jak dokumenty.

Ale ze spacjami.

Nazwy funkcji

Nazwy funkcji powinny być jasne.

Dobrze:

def show_menu():
    print("Menu")

Dobrze:

def calculate_total():
    print("Calculating...")

Źle:

def x():
    print("Something")

Źle:

def do_stuff():
    print("Stuff")

Używaj nazw, które wyjaśniają, co funkcja robi.

Nazwy funkcji zwykle używają małych liter i podkreśleń:

show_menu
calculate_total
add_product
get_user_name

Ten styl nazywa się snake_case.

Python lubi snake_case.

Nie prawdziwe węże.

Prawdopodobnie.

Parametry

Parametr pozwala funkcji otrzymać dane.

Przykład:

def greet_user(name):
    print(f"Hello, {name}!")

Tutaj:

name

jest parametrem.

To jak zmienna wejściowa dla funkcji.

Teraz wywołaj funkcję:

greet_user("Anna")
greet_user("Marco")
greet_user("Sofia")

Pełny przykład:

def greet_user(name):
    print(f"Hello, {name}!")

greet_user("Anna")
greet_user("Marco")
greet_user("Sofia")

Output:

Hello, Anna!
Hello, Marco!
Hello, Sofia!

Funkcja jest wielokrotnego użytku.

Wiadomość zmienia się zależnie od wartości, którą przekazujesz.

Bardzo użyteczne.

Bardzo czyste.

Dużo mniej kopiuj-wklej.

Argumenty

Kiedy wywołujesz funkcję, wartość, którą przekazujesz, nazywa się argumentem.

Przykład:

def greet_user(name):
    print(f"Hello, {name}!")

greet_user("Anna")

Tutaj:

name

jest parametrem.

A:

"Anna"

jest argumentem.

Proste wyjaśnienie:

parametr = zmienna w definicji funkcji
argument = konkretna wartość przekazana przy wywołaniu funkcji

Ludzie często używają tych słów dość luźno.

Nie panikuj.

Najważniejsza idea to:

Funkcje mogą otrzymywać wartości.

To jest najważniejsze.

Funkcja z dwoma parametrami

Funkcja może mieć więcej niż jeden parametr.

Przykład:

def greet_user(name, city):
    print(f"Hello, {name} from {city}!")

Wywołaj ją:

greet_user("Anna", "Rome")

Pełny przykład:

def greet_user(name, city):
    print(f"Hello, {name} from {city}!")

greet_user("Anna", "Rome")
greet_user("Marco", "Milan")

Output:

Hello, Anna from Rome!
Hello, Marco from Milan!

Kolejność ma znaczenie.

To:

greet_user("Anna", "Rome")

oznacza:

name = Anna
city = Rome

Jeśli je zamienisz:

greet_user("Rome", "Anna")

Output:

Hello, Rome from Anna!

Technicznie poprawne.

Emocjonalnie dziwne.

Funkcje i obliczenia

Funkcje są świetne do obliczeń.

Przykład:

def add_numbers(a, b):
    total = a + b
    print(total)

add_numbers(5, 3)

Output:

8

Tutaj:

a
b

są parametrami.

Ta funkcja dodaje je i wyświetla wynik.

Inny przykład:

def calculate_total(price, quantity):
    total = price * quantity
    print(f"Total: {total:.2f}")

calculate_total(10.00, 3)

Output:

Total: 30.00

To jest użyteczne.

Ale jest lepszy sposób.

Zamiast tylko wyświetlać wynik, możemy go zwrócić.

I tutaj pojawia się return.

Bardzo ważne.

Bardzo funkcyjne.

Zwracanie wartości

Funkcja może zwracać wartość.

Przykład:

def add_numbers(a, b):
    return a + b

result = add_numbers(5, 3)

print(result)

Output:

8

Funkcja:

def add_numbers(a, b):
    return a + b

nie drukuje.

Ona oddaje wynik z powrotem.

Ta linia zapisuje wynik:

result = add_numbers(5, 3)

Potem go drukujemy:

print(result)

To jest bardzo ważne.

Funkcja, która zwraca wartość, jest bardziej elastyczna.

Możesz wydrukować wartość.

Albo ją zapisać.

Albo użyć jej w innym obliczeniu.

Albo przekazać do innej funkcji.

Tutaj funkcje stają się potężne.

print() vs return

To jest bardzo ważne.

print() pokazuje coś na ekranie.

return wysyła wartość z powrotem z funkcji.

Przykład z print():

def add_numbers(a, b):
    print(a + b)

result = add_numbers(5, 3)

print(result)

Output:

8
None

Dlaczego None?

Bo funkcja wydrukowała wynik, ale niczego nie zwróciła.

Teraz przykład z return:

def add_numbers(a, b):
    return a + b

result = add_numbers(5, 3)

print(result)

Output:

8

Prosta zasada:

Używaj print(), żeby coś pokazać.
Używaj return, żeby zwrócić wartość.

To jedna z najważniejszych lekcji dla początkujących.

Bardzo ważna.

Bardzo łatwa do pomylenia.

Bardzo normalna.

Funkcja, która zwraca sumę

Przykład:

def calculate_total(price, quantity):
    return price * quantity

total = calculate_total(25.00, 4)

print(f"Total: {total:.2f}")

Output:

Total: 100.00

Teraz funkcja oblicza.

Główny program decyduje, co zrobić z wynikiem.

To jest czystsze.

Funkcja ma jedno zadanie:

obliczyć sumę

Główny program ma inne zadanie:

pokazać wynik

Ten podział jest dobry.

Bardzo dobry.

Bardzo profesjonalny.

Bardzo “dzisiaj bez spaghetti”.

Domyślne wartości parametrów

Parametr może mieć wartość domyślną.

Przykład:

def greet_user(name="Guest"):
    print(f"Hello, {name}!")

Teraz możesz wywołać:

greet_user("Anna")
greet_user()

Pełny przykład:

def greet_user(name="Guest"):
    print(f"Hello, {name}!")

greet_user("Anna")
greet_user()

Output:

Hello, Anna!
Hello, Guest!

Kiedy przekazujesz imię, Python go używa.

Kiedy nie przekazujesz imienia, Python używa "Guest".

To jest przydatne, kiedy wartość jest opcjonalna.

Wartości domyślne są jak plan awaryjny.

Rzadka rzecz w programowaniu, która brzmi naprawdę pocieszająco.

Argumenty nazwane

Możesz przekazywać argumenty po nazwie.

Przykład:

def describe_product(name, price):
    print(f"{name}: {price:.2f}")

describe_product(name="Keyboard", price=70.00)

Output:

Keyboard: 70.00

To nazywa się używanie keyword arguments.

Może sprawić, że wywołania funkcji będą jaśniejsze.

Szczególnie kiedy jest dużo parametrów.

Przykład:

def create_user(name, age, city):
    print(f"{name}, {age}, {city}")

create_user(name="Anna", age=25, city="Rome")

To jest czytelniejsze niż:

create_user("Anna", 25, "Rome")

Oba sposoby działają.

Argumenty nazwane sprawiają, że znaczenie jest jaśniejsze.

A jasny kod ma mniejsze szanse zaatakować cię później.

Zwykle.

Scope zmiennych

Zmienne stworzone wewnątrz funkcji istnieją tylko wewnątrz tej funkcji.

Przykład:

def greet():
    message = "Hello!"

greet()

print(message)

To daje błąd:

NameError

Dlaczego?

Bo message została stworzona wewnątrz funkcji.

Poza funkcją nie istnieje.

To nazywa się scope.

Scope oznacza:

gdzie zmienna jest dostępna

Zmienna wewnątrz funkcji jest lokalna dla tej funkcji.

Żyje tam.

Nie wychodzi na zewnątrz.

Bardzo prywatna.

Bardzo introwertyczna.

Zmienne lokalne

Przykład:

def calculate_total(price, quantity):
    total = price * quantity
    return total

result = calculate_total(10, 3)

print(result)

Output:

30

Tutaj:

total

istnieje wewnątrz funkcji.

To działa:

return total

bo jesteśmy wewnątrz funkcji.

Ale to nie zadziałałoby:

print(total)

poza funkcją.

Zmienna total jest lokalna.

Jeśli potrzebujesz wyniku poza funkcją, zwróć go.

To jest poprawny sposób.

Nie próbuj kraść lokalnych zmiennych przez okno.

Python zamyka okno.

Funkcja z listą

Funkcje mogą otrzymywać listy.

Przykład:

def show_products(products):
    for product in products:
        print(f"- {product}")

items = ["Keyboard", "Mouse", "Notebook"]

show_products(items)

Output:

- Keyboard
- Mouse
- Notebook

Funkcja otrzymuje listę.

Potem przechodzi przez listę.

To jest bardzo częste.

Funkcje i listy świetnie ze sobą współpracują.

Lista przechowuje wiele wartości.

Funkcja je przetwarza.

Bardzo użyteczne.

Bardzo realne.

Bardzo “to może kiedyś zostać raportem”.

Funkcja, która oblicza sumę listy

Przykład:

def calculate_total(prices):
    total = 0

    for price in prices:
        total += price

    return total

prices = [10.00, 25.50, 5.00]

total = calculate_total(prices)

print(f"Total: {total:.2f}")

Output:

Total: 40.50

Ta funkcja działa z dowolną listą cen.

Przykład:

order_one = [10.00, 20.00]
order_two = [5.50, 7.25, 100.00]

print(calculate_total(order_one))
print(calculate_total(order_two))

Ta sama funkcja działa dla różnych danych.

To jest piękno funkcji.

Piszesz raz.

Używasz ponownie.

Czujesz się lekko potężny.

Funkcja ze słownikiem

Funkcje mogą otrzymywać też słowniki.

Przykład:

def show_user(user):
    print(f"Name: {user['name']}")
    print(f"Age: {user['age']}")
    print(f"City: {user['city']}")

user = {
    "name": "Anna",
    "age": 25,
    "city": "Rome"
}

show_user(user)

Output:

Name: Anna
Age: 25
City: Rome

To jest bardzo użyteczne.

Słownik przechowuje dane strukturalne.

Funkcja je pokazuje albo przetwarza.

Prawdziwe aplikacje robią to ciągle.

Użytkownicy.

Produkty.

Zamówienia.

Profile.

Wszystko staje się łatwiejsze, kiedy funkcje obsługują dane strukturalne.

Bardzo praktyczne.

Bardzo przyjazne backendowi.

Funkcja z listą słowników

Przykład:

def show_products(products):
    for product in products:
        print(f"{product['name']}: {product['price']:.2f}")

products = [
    {"name": "Keyboard", "price": 70.00},
    {"name": "Mouse", "price": 25.00},
    {"name": "Notebook", "price": 5.50}
]

show_products(products)

Output:

Keyboard: 70.00
Mouse: 25.00
Notebook: 5.50

To mocny schemat.

Znasz już listy.

Znasz już słowniki.

Teraz otaczasz je funkcjami.

Tak programy stają się uporządkowane.

Struktury danych przechowują dane.

Funkcje pracują z danymi.

Bardzo ważna idea.

Bardzo software.

Typowy błąd: zapomnienie nawiasów

Źle:

def greet():
    print("Hello!")

greet

To nie wywołuje funkcji.

Poprawnie:

greet()

Nawiasy wywołują funkcję.

Bez nawiasów tylko odwołujesz się do funkcji.

Python mówi:

Tak, ta funkcja istnieje.

Ale jej nie uruchamia.

Wywołanie funkcji potrzebuje nawiasów.

Małe kółka.

Duża odpowiedzialność.

Typowy błąd: zapomnienie dwukropka

Źle:

def greet()
    print("Hello!")

Poprawnie:

def greet():
    print("Hello!")

Definicje funkcji potrzebują dwukropka.

Python kocha dwukropki.

Warunki potrzebują dwukropków.

Pętle potrzebują dwukropków.

Funkcje potrzebują dwukropków.

Python praktycznie buduje małą kolekcję dwukropków.

Szanuj ją.

Typowy błąd: złe wcięcie

Źle:

def greet():
print("Hello!")

Poprawnie:

def greet():
    print("Hello!")

Ciało funkcji musi być wcięte.

Jeśli wcięcie jest złe, Python daje:

IndentationError

To nie Python dramatyzuje.

On naprawdę nie wie, co należy do funkcji.

Wcięcie to struktura.

Znowu.

Zawsze znowu.

Typowy błąd: zapomnienie return

Źle:

def add_numbers(a, b):
    total = a + b

result = add_numbers(5, 3)

print(result)

Output:

None

Dlaczego?

Bo funkcja niczego nie zwraca.

Poprawnie:

def add_numbers(a, b):
    total = a + b
    return total

result = add_numbers(5, 3)

print(result)

Output:

8

Jeśli potrzebujesz wartości poza funkcją, zwróć ją.

Nie tylko ją obliczaj.

Obliczenie uwięzione wewnątrz funkcji jest jak pizza za szybą.

Ładnie wygląda.

Nie jest użyteczne.

Typowy błąd: kod po return

Kiedy Python dochodzi do return, funkcja się kończy.

Przykład:

def test():
    return "Done"
    print("This will not run")

message = test()

print(message)

Output:

Done

Ta linia się nie wykona:

print("This will not run")

Bo jest po return.

return natychmiast wychodzi z funkcji.

Bardzo ważne.

Wszystko po return w tym samym bloku jest ignorowane.

Jak rada po tym, jak ktoś już zamknął drzwi.

Typowy błąd: zbyt wiele odpowiedzialności

Zła funkcja:

def do_everything():
    print("Show menu")
    print("Ask user")
    print("Add product")
    print("Calculate total")
    print("Send email")

Ta funkcja robi za dużo.

Lepiej:

def show_menu():
    print("Menu")

def add_product():
    print("Add product")

def calculate_total():
    print("Calculate total")

Dobra funkcja zwykle robi jedną jasną rzecz.

Nie zawsze idealnie.

Ale próbuj.

Funkcje powinny być wystarczająco małe, żeby dało się je zrozumieć.

Jeśli funkcja robi się ogromna, może trzeba ją podzielić.

Jak pizzę.

Ale z kodem.

Mini program: funkcja powitania

Utwórz plik:

greeting_function.py

Napisz:

def greet_user(name):
    print(f"Hello, {name}!")
    print("Welcome to the program.")

user_name = input("What is your name? ")

greet_user(user_name)

Przykład:

What is your name? Anna

Output:

Hello, Anna!
Welcome to the program.

Ten program używa:

Prosty.

Ale ważny.

Nie piszesz już tylko kodu liniowego.

Organizujesz zachowanie.

Bardzo dobrze.

Mini program: kalkulator sumy

Utwórz plik:

total_calculator.py

Napisz:

def calculate_total(price, quantity):
    return price * quantity

price = float(input("Price: "))
quantity = int(input("Quantity: "))

total = calculate_total(price, quantity)

print(f"Total: {total:.2f}")

Przykład:

Price: 25
Quantity: 4

Output:

Total: 100.00

Ten program używa:

Bardzo praktyczne.

Bardzo sklepowe.

Bardzo “to kiedyś może stać się fakturą”.

Ostrożnie.

Faktury przyciągają podatki.

Mini program: funkcja średniej

Utwórz plik:

average_function.py

Napisz:

def calculate_average(numbers):
    total = 0

    for number in numbers:
        total += number

    return total / len(numbers)

scores = []

score_count = int(input("How many scores? "))

for number in range(1, score_count + 1):
    score = float(input(f"Score {number}: "))
    scores.append(score)

average = calculate_average(scores)

print(f"Average: {average:.2f}")

Przykład:

How many scores? 3
Score 1: 80
Score 2: 90
Score 3: 70

Output:

Average: 80.00

Ten program łączy:

Bardzo dobra praktyka dla początkujących.

To prawdziwy schemat.

Zbierz dane.

Przekaż dane do funkcji.

Otrzymaj wynik.

Pokaż wynik.

Czysto.

Użytecznie.

Wystarczająco profesjonalnie, żeby przestraszyć kod spaghetti.

Praktyka

Utwórz plik:

practice_functions.py

Napisz program, który:

Przykładowe rozwiązanie:

def calculate_discount(price, discount_percent):
    discount_amount = price * discount_percent / 100
    final_price = price - discount_amount
    return final_price

price = float(input("Price: "))
discount = float(input("Discount percent: "))

final_price = calculate_discount(price, discount)

print(f"Final price: {final_price:.2f}")

Przykład:

Price: 100
Discount percent: 20

Output:

Final price: 80.00

To bardzo użyteczne.

Rabaty są wszędzie.

Sklepy ich używają.

Klienci je lubią.

Developerzy je obliczają.

Księgowi je sprawdzają.

Każdy ma rolę.

Bardzo uporządkowany chaos.

Mini wyzwanie

Utwórz plik:

task_manager_functions.py

Twój program powinien:

Przykładowe rozwiązanie:

tasks = []

def show_menu():
    print("----- Task Manager -----")
    print("1. Add task")
    print("2. Show tasks")
    print("q. Quit")

def add_task(tasks):
    task = input("Task: ")
    tasks.append(task)
    print("Task added.")

def show_tasks(tasks):
    if len(tasks) == 0:
        print("No tasks yet.")
    else:
        print("Tasks:")

        for task in tasks:
            print(f"- {task}")

while True:
    show_menu()

    choice = input("Choose an option: ").lower()

    if choice == "1":
        add_task(tasks)
    elif choice == "2":
        show_tasks(tasks)
    elif choice == "q":
        print("Goodbye.")
        break
    else:
        print("Unknown option.")

To lepsza wersja task managera.

Dlaczego?

Bo kod jest zorganizowany w funkcje.

Każda funkcja ma zadanie:

show_menu      pokazuje menu
add_task       dodaje zadanie
show_tasks     pokazuje wszystkie zadania

Główna pętla staje się łatwiejsza do czytania.

O to chodzi w funkcjach.

Sprawiają, że programy są łatwiejsze do organizacji.

Mniej chaosu.

Więcej struktury.

Nadal Python.

Extra challenge: funkcje dla produktów

Utwórz plik:

product_functions.py

Zbuduj program z tymi funkcjami:

create_product()
show_product(product)
calculate_total(products)

Każdy produkt powinien być słownikiem z:

name
price
quantity

Przykładowy pomysł:

def create_product():
    product = {
        "name": input("Name: "),
        "price": float(input("Price: ")),
        "quantity": int(input("Quantity: "))
    }

    return product

def show_product(product):
    total = product["price"] * product["quantity"]
    print(f"{product['name']}: {product['quantity']} x {product['price']:.2f} = {total:.2f}")

def calculate_total(products):
    total = 0

    for product in products:
        total += product["price"] * product["quantity"]

    return total

products = []

product_count = int(input("How many products? "))

for number in range(1, product_count + 1):
    print(f"Product {number}")
    product = create_product()
    products.append(product)

print("----- Products -----")

for product in products:
    show_product(product)

total = calculate_total(products)

print(f"Total: {total:.2f}")

To wyzwanie łączy:

To poważny Python dla początkujących.

Mała logika sklepu.

Dane strukturalne.

Kod wielokrotnego użytku.

Bardzo mocne.

Bardzo użyteczne.

Bardzo “zaczynasz budować prawdziwe rzeczy”.

Checklist dla początkujących

Kiedy twoja funkcja nie działa, sprawdź:

Czy użyłem def?
Czy dodałem nawiasy?
Czy dodałem dwukropek?
Czy wciąłem ciało funkcji?
Czy wywołałem funkcję?
Czy przekazałem poprawną liczbę argumentów?
Czy dobrze napisałem nazwę funkcji?
Czy użyłem return, jeśli potrzebuję wartości z powrotem?
Czy nie mylę print() i return?
Czy zmienna jest lokalna dla funkcji?
Czy umieściłem kod po return?
Czy funkcja nie robi zbyt wielu rzeczy?

Funkcje są potężne.

Ale wprowadzają nowe błędy.

To normalne.

Na początku funkcje wyglądają jak dodatkowa praca.

Potem pewnego dnia piszesz program bez funkcji i czujesz ból.

Wtedy rozumiesz.

Rozwój jest piękny.

I lekko irytujący.

Podsumowanie

Dzisiaj nauczyłeś się:

To ogromny krok.

Twój kod może teraz być czystszy.

Bardziej wielokrotnego użytku.

Bardziej uporządkowany.

Mniej kopiuj-wklej.

Mniej chaosu.

Funkcje są jednym z głównych narzędzi, które zmieniają skrypty początkujących w prawdziwe programy.

Nie piszesz już tylko komend.

Tworzysz zachowanie wielokrotnego użytku.

To poważny postęp.

Bardzo Python.

Bardzo następny poziom.

Następna lekcja

W następnej lekcji nauczymy się plików.

Pliki pozwalają twoim programom zapisywać dane.

Teraz, kiedy program się kończy, dane znikają.

Bardzo smutne.

Bardzo tymczasowe.

Z plikami możesz zapisać dane na dysku i odczytać je później.

Na przykład:

zapisać zadania
wczytać zadania
zapisać kontakty
czytać notatki
pisać raporty

To bardzo ważne.

Bo programy stają się dużo bardziej użyteczne, kiedy pamiętają rzeczy.

Pamięć to siła.

Chyba że zapisałeś zły plik.

Wtedy pamięć to dramat.

Bardzo edukacyjny dramat.