4 – PYTHON. Stosowanie funkcji

Funkcje w Pythonie to podstawowy sposób porządkowania kodu, który pozwala na jego ponowne użycie. Definiuje się je za pomocą słowa kluczowego def, a ich struktura wygląda tak:

# Definicja funkcji
def nazwa_funkcji():
    # Instrukcje funkcji
    
    
# Definicja funkcji z argumentem
def nazwa_funkcji(argument1):
    # Instrukcje funkcji
Python

Przykłady wykorzystania funkcji z użyciem modułu Turtle.

  • Funkcja bez argumentów

Poniższa funkcja jest odpowiedzialna za narysowanie kwadratu o boku 100. Nie przyjmuje żadnych parametrów.

import turtle

def kwadrat():  # definicja funkcji
  for i in range(4):    # instrukcja odpowiedzialna za narysowanie kwadratu
    turtle.forward(100)
    turtle.left(90)

kwadrat() # wywołanie zdefiniowanej funkcji
Python

  • Funkcja z argumentami:

Poniższa funkcja służy do rysowania dowolnego wielokąta, gdzie długość każdego boku wynosi 100. Argument liczba_katow pozwala określić, ile kątów ma mieć figura. W tym przypadku przekazano wartość 5.

Mówiąc prościej: wszędzie tam, gdzie w definicji pojawia się argument liczba_katow, zostanie wstawiona liczba 5. Python automatycznie wykona potrzebne obliczenia, jeśli będzie to konieczne (np. jak linijce 7).

import turtle

# definicja funkcji rysującej dowolny wielokąt
def wielokat(liczba_katow):
  for i in range(liczba_katow):
    turtle.forward(100)
    turtle.left(360/liczba_katow)
    
# wywołanie funkcji    
wielokat(5)
Python

Jeżeli natomiast chcemy mieć dodatkowo kontrolę nad długością boku rysowanej figury, można dodać kolejny parametr.

import turtle

# definicja funkcji rysującej dowolny wielokąt
# dodano dodatkowy argument dl_boku określający długość boku figury
def wielokat(liczba_katow, dl_boku): 
  for i in range(liczba_katow):
    turtle.forward(dl_boku)
    turtle.left(360/liczba_katow)
    
# wywołanie funkcji z dwoma argumentami   
wielokat(11, 50)
Python

Wykorzystanie definicji figur geometrycznych do narysowania domku:

import turtle
turtle.speed(100)

def kwadrat(bok):
  for i in range(4):
    turtle.fd(bok)
    turtle.rt(90)

def trojkat():
  for i in range(3):
    turtle.fd(150)
    turtle.left(120)
    
def prostokat(bok1, bok2):
  for i in range(2):
    turtle.fd(bok1)
    turtle.rt(90)
    turtle.fd(bok2)
    turtle.rt(90)

kwadrat(150)
trojkat()
turtle.penup()
turtle.rt(90)
turtle.fd(20)
turtle.lt(90)
turtle.fd(20)
turtle.pendown()
kwadrat(40)
turtle.penup()
turtle.fd(70)
turtle.pendown()
kwadrat(40)
turtle.penup()
turtle.rt(90)
turtle.fd(60)
turtle.rt(90)
turtle.fd(35)
turtle.rt(180)
turtle.pendown()
prostokat(40,70)
Python