Dodatkowe biblioteki

Załóżmy że chcemy stworzyć elektroniczną wersję planszowego RPG w którym używana jest kostka 20 ścienna. Będzie nam potrzebna jakaś funkcja, która wylosuje nam liczbę z zakresu od 1 do 20. Zagadnienia liczb losowych raczej nie są częścią tego samouczka, więc jak się spodziewasz w Pythonie powinno być już coś, co pozwoli nam losować takie liczby. Jeśli tak, to masz rację, ale musimy użyć dodatkowego modułu/biblioteki.

Biblioteki zawierają najczęściej tematyczny zbiór funkcji i klas (na razie nie musisz wiedzieć co to są klasy). W naszym przypadku będzie to zbiór dotyczący liczb losowych zawierający funkcję pozwalającą losować liczbę z danego zakresu.

Przejdźmy zatem do jego zaimportowania i przykładu użycia funkcji randint (której działania mam nadzieję nie muszę tłumaczyć)

import random
 
print random.randint(1,20)

kiedy importujemy jakiś moduł aby dostać się do funkcji w nim zawartej musimy użyć jego nazwy. Jest to związane z przestrzeniami nazw, to znaczy w naszym programie mogły by wystąpić funkcje o tej samej nazwie i nie mieli byśmy jak dostać się do funkcji z modułu random.

Jeśli jednak wiemy, że chcemy użyć tylko jednej funkcji z danej biblioteki możemy zaimportować tylko ją i mieć do niej bezpośredni dostęp. Zobaczmy to na przykładzie funkcji sleep z modułu time, która to funkcja pozwala odczekać daną ilość sekund.

 

from time import sleep
sleep(10)

Najważniejszą chyba wiadomością w tym rozdziale jest to, że tak samo możesz importować swoje funkcje!

Na potrzeby tego samouczka załóżmy, że wymaga to aby plik z którego będziemy chcieli zaimportować znajdował się w tym samym folderze (może też znajdować się w folderze ze wszystkimi dodatkowymi pakietami Pythona, ale nie oszukiujmy się, na początku nauki nie napiszesz czegoś na tyle dopracowanegoo by używać tego na stałe, a nie warto zaśmiecać folderów z instalacją Pythona).

Stwórzymy więc sobie plik o nazwie funkcje.py zawierający następujący kod

def a():
    print "A"
 
def b():
    print "B"

A następnie uruchom interpreter w tym folderze i zaimportuj wszystkie funkcje bezpośrednio za pomocą
 

from funkcje import *
a()
b()

Gwiazdka oznacza, że chcemy zaimportować wszystko a składnia mówi nam, że będziemy mieć do funkcji bezpośredni dostęp.

Ostanią rzeczą o krórej warto jest wspomnieć i która (przynajmniej według mnie) przydaje się niesamowicie często są "słowniki domyślne" z pakietu collections. Działają one podobnie do normalnych słowników z tą różnicą, że kiedy pytamy o wartość klucza którego w słowniku jeszcze nie ma, nie dostaniemy błędu, lecz wartość domyślną oraz para klucz:wartość zostanie zapisana w słowniku.

Jest to bardzo użyteczne we wszelkiego rodzaju zliczeniach.

from collections import defaultdict
d = defaultdict(int)
print  d['x']
 
napis = "aaabbccoooossasdk"
for litera in napis:
    d[litera] += 1
print d