Zanurkuj w Pythonie/Deklarowanie funkcji

Z Wikibooks, biblioteki wolnych podręczników.

[edytuj] Deklarowanie funkcji

Python, podobnie jak wiele innych języków programowania, posiada funkcje, lecz nie definiujemy ich w oddzielnych plikach nagłówkowych (jak np. w C++), czy też nie dzielimy na sekcje interfejsu i implementacji jak w Pascalu. Jeśli potrzebujemy jakiejś funkcji, po prostu ją deklarujemy, na przykład:

def buildConnectionString(params):

Słowo kluczowe def rozpoczyna deklarację funkcji, następnie podajemy nazwę funkcji, a potem, w nawiasach, parametry. Większą liczbę parametrów podajemy po przecinkach.

Jak widać funkcja nie definiuje zwracanego typu. Podczas deklarowania pythonowych funkcji nie określamy, czy mają one zwracać jakąś wartość, a nawet czy mają cokolwiek zwracać. W rzeczywistości każda funkcja zwraca pewną wartość. Jeżeli w funkcji znajduje się instrukcja return, funkcja zwróci określoną wartość, wskazaną za pomocą tej instrukcji. W przeciwnym wypadku (gdy dana funkcja nie posiada instrukcji return) zostanie zwrócona wartość None, czyli tak zwana wartość "pusta", w innych językach często określana jako null lub nil.

Porada W Visual Basicu funkcje (te, które zwracają wartość) rozpoczynają się słowem kluczowym function, a procedury (z ang. subroutines, nie zwracają wartości) deklarujemy za pomocą słowa sub. W Pythonie nie ma czegoś takiego jak procedury. Są tylko funkcje, a każda z nich zwraca wartość (nawet jeżeli jest to None) i wszystkie rozpoczynają się słowem kluczowym def.


Argument params nie ma określonego typu. W Pythonie typów zmiennych nie określamy w sposób jawny. Interpreter sam automatycznie rozpoznaje i śledzi typ zmiennej.

Porada W Javie, C++ i innych językach statycznie typowanych musimy określić typ danych zwracany przez funkcję, a także typ każdego argumentu. W Pythonie nigdzie tego nie robimy. Bazując na wartości jaka została przypisana zmiennej, Python sam określa jej typ.


[edytuj] Typy danych w Pythonie a inne języki programowania

Jeśli chodzi o nadawanie typów, języki programowania można podzielić na:

statycznie typowane
Są to języki, w których typy są nadawane podczas kompilacji. Wiele tego typu języków programowania wymaga deklarowania wszystkich zmiennych przed ich użyciem, przez podanie ich typu. Przykładami takich języków są Java, C/C++, Pascal.
dynamicznie typowane
Są to języki, w których typy zmiennych są nadawane podczas działania programu. VBScript i Python są językami dynamicznie typowanymi, ponieważ nadają one typ zmiennej podczas przypisania do niej wartości.
silnie typowane
Są to języki, w których między różnymi typami widać wyraźną granicę. Jeśli mamy pewną liczbę całkowitą, to nie możemy jej traktować jak łańcuch znaków bez wcześniejszej konwersji.
słabo typowane
Są to języki, w których możemy nie zwracać uwagi na typ zmiennej. Do takich języków zaliczymy VBScript. Możemy w nim, nie wykonując żadnej wyraźnej konwersji, połączyć łańcuch znaków '12' z liczbą całkowitą 3 otrzymując łańcuch '123', a następnie potraktować go jako liczbę całkowitą 123. Konwersja jest wykonywana automatycznie.

Python jest językiem zarówno dynamicznie typowanym (ponieważ nie wymaga wyraźnej deklaracji typu), jak i silnie typowanym (ponieważ zmienne posiadają wyraźnie ustalone typy, które nie podlegają automatycznej konwersji).