Przejdź do głównej zawartości

Python - lekcja 006

Spis treści:

- funkcje
- funkcje rekurencyjne
- zadania



W Pythonie tak jak w większości języków programowania można tworzyć podprogramy. Podprogramy są to fragmenty kodu, którym programista nadał nazwę. Python dopuszcza przekazywanie parametrów do podprogramu w chwili jego wywołania.

Przykład

def a(b, c):
    return b + c
   
print a(4,5)

http://ideone.com/bpBPVd

Jak widać w powyższym przykładzie by zdefiniować podprogram należy użyć instrukcji def. Po tej instrukcji pojawia się nazwa funkcji i nawias okrągły. Opcjonalnie w nawiasie okrągłym mogą znaleźć się nazwy zmiennych, do których będziemy chcieli przekazać jakieś wartości.
Podprogram może zwracać wyznaczoną przez siebie wartość w miejsce swojego wywołania. W tym celu używa się instrukcji return a tuż po niej instrukcja, której rezultat programista chce wykorzystać.

Jak nazywa się podprogram, który nie zwraca żadnej wartości (np. w języku Pascal)?

Funkcje do przeanalizowania:

 def a():
    print 5

def b():
    return 5

def c(x):
    return x ** 2

def d(x):
    if x>0:
        return x
    return -x

def e(x = 3):
    return x - 1

def f(x, y = 0):
    return x*y

a
a()
print a()
b()
print b()
c(2)
print c(2)
d(-10)
print d(-10)
print d(c(b()))
print e()
print e(2)
print f(2)
print f(2, 2)
print f(2,d(c(b())))

http://ideone.com/Y3vbu9

W powyższych przykładach pojawia się instrukcja przypisania w części gdzie umieszczane są argumenty funkcji. Oznacza ona nadanie wartości domyślnej danemu parametrowi (jeżeli w wywołaniu funkcji nie pojawi się jakiś parametr przypisana zostanie mu wartość domyślna). Nie można stworzyć funkcji

def a(x = 0, y):
    return x + y
   
print a(4)

http://ideone.com/ADC7o2

gdyż nie można jednoznacznie stwierdzić, który parametr funkcji ma mieć przypisaną czwórkę. Należy więc pamiętać by parametry z domyślnymi wartościami pojawiły się na końcu listy argumentów.

W język Python wbudowana jest funkcja map. Tworzy ona listę zwracanych przez funkcję (pierwszy argument) wartości z kolejno przetworzonych elementów listy parametrów.

def a(x):
    return x**2

print map(a, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

http://ideone.com/NqseFA

Jest to całkiem przydatna funkcja gdyż pozwala na odrobinę lenistwa podczas tworzenia kodu programu.

Lista, wraz opisami, wbudowanych w język Python funkcji jest dostępna na pod linkiem adf.ly/d95DQ.

Popraw poniższą funkcję by zwracała największy z przekazanych jej parametrów. Swoje poprawki nanieś tylko w drugiej linii kodu i użyj w tym celu funkcji max:

def maks(a, b, c):
    return a, b, c
   
print maks(3, 1, 2)

http://ideone.com/iQL2hl

odpowiedź: http://ideone.com/3GsGUN

Jeżeli nie wiemy ile parametrów ma przyjąć nasza funkcja to można jako argument podać zmienną, której nazwa rozpocznie się gwiazdką:




Komentarze

Popularne posty z tego bloga

[C++]Konwersja systemu dziesiętnego na binarny [dec2bin, dec2u2]

Konwersja między systemami liczbowymi była już poruszana w tym serwisie tym razem zajmę się kodem U2. Inaczej zwany uzupełnieniem do 2. Opis tego systemu pojawił się w kontekście wstępu do programowania w języku Python [ tutaj ]. Prosty program tzw. szkolny zamiany nieujemnej liczby dziesiętnej na jej postać binarną: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream> using namespace std; int main () { int liczba; cin >> liczba; string wynik; while (liczba){ wynik = (liczba % 2 ? "1" : "0" ) + wynik; liczba /= 2 ; } cout << wynik; return 0 ; } Poniżej prezentuję kod programu, który zawiera trzy metody rozwiązania problemu jakim jest wyświetlenie użytkownikowi reprezentacji u2 podanej przez niego liczby dziesiętnej. Pierwsza z nich wywodzi się z typowego algorytmu konwersji systemu dec do u2: 1. przedstaw bezwzględną wartość liczby dziesiętnej w postaci binarnej, 2. dodaj na początek

Python - lekcja 005

Spis treści - zamiana całkowitych liczb dziesiętnych na ich odpowiedniki w innych systemach liczbowych (algorytm), - ujemne liczby całkowite w systemie binarnym (ZM, U1, U2, algorytm, formatowanie stringów, rzutowanie ze zmianą systemu liczbowego) [dec2bin, dec2ZM, dec2U1, dec2U2] - zadania.