Lista wykładów     Następny wykład

Instalacja Pythona, pierwsze kroki

Instalacja Pythona Pierwsze kroki, tryb interaktywny Pierwsze kroki, uruchamianie programów Narzędzia do pisania programów

Instalacja Pythona

Python został stworzony w 1990 roku przez Holendra Guido Van Rossum, nazwę otrzymał dla uczczenia Latającego Cyrku Monthy Pythona. Twórcy Pythona nie przejmują sie raczej tzw. zgodnością wsteczną - programy (polecenia, instrukcje) dopasowane do starszej wersji Pythona mogą nie działać w nowszej. Najnowsza wersja fremeworku Django wymaga wersji Pythona pomiędzy 2.5 a 2.7. Ja będę omawiał wersje 2.7. Pythona można pobrać stąd http://www.python.org/download/.

W internecie jest sporo informacji o Pythonie. Z powodu częstych aktualizacji języka i braku zgodności wstecznej łatwo trafić na kursy i tutoriale niezgodne z wersją 2.7, a tym bardziej z najnowszą wersją 3.2. Trzeba sie liczyć z koniecznością zmian w przytaczanych kodach źródłowych. Najpewniejszym źródłem jest oficjalna strona http://www.python.org/doc/ zawierająca dokumentację i tutoriale.

Brak zgodności w jeszcze większym stopniu dotyczy książek. Najlepszą chyba książką jest Zanurkuj w Pythonie (Dive into Python).

Spis treści

Pierwsze kroki, tryb interaktywny

Python pozwala na pracę interaktywną, tzn. uruchamiamy interpreter Pythona:

i wpisujemy polecenie. Można w ten sposób używać Pythona zamiast windowsowego kalkulatora (ja tak robię), łatwo się zapamiętuje wyniki pośrednie, widać wszystkie liczby, które zostały wpisane.
Zamykamy konsolę poleceniem exit().

W trybie interaktywnym można wpisywać również polecenia wielowierszowe korzystające z instrukcji warunkowych i pętli:

>>> suma = 0
>>> silnia = 1
>>> for i in range(1,1000):
	   suma+=i
	   silnia*=i

	
>>> suma
499500
>>> silnia
40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480047998861019719605
86316668729948085589013238296699445909974245040870737599188236277271887325197795059509952761208749754624970436014182780
94646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349
34755342864657661166779739666882029120737914385371958824980812686783837455973174613608537953452422158659320192809087829
73084313928444032812315586110369768013573042161687476096758713483120254785893207671691324484262361314125087802080002616
83151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821
33318611681155361583654698404670897560290095053761647584772842188967964624494516076535340819890138544248798495995331910
17233555566021394503997362807501378376153071277619268490343526252000158885351473316117021039681759215109077880193931781
14194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671
61676217916890977991190375403127462228998800519544441428201218736174599264295658174662830295557029902432415318161721046
58320367869061172601587835207515162842255402651704833042261439742869330616908979684825901254583271682264580665267699586
52682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612
13855860030143569452722420634463179746059468257310379008402443243846565724501440282188525247093519062092902313649327349
75655139587205596542287497740114133469627154228458623773875382304838656889764619273838149001407673104466402598994902222
21765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798
72290851929681937238864261483965738229112312502418664935314397013742853192664987533721894069428143411852015801412334482
80150513996942901534830776445690990731524332782882698646027898643211390835062170950025973898635542771967428222487575867
65752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028
51064018215439945715680594187274899809425474217358240106367740459574178516082923013535808184009699637252423056085590370
06242712434169090041536901059339838357779394109700277534720000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000L
Przykład pokazuje kilka charakterystycznych cech Pythona:

W trybie interaktywnym możemy również uruchamiać programy (skrypty). Program musi być zapisany w pliku z rozszerzeniem py (plik tekstowy) lub pyc (plik częściowo skompilowany). Uruchamiamy program poleceniem: import nazwa_programu_bez_rozszerzenia
Plik Test.py zawiera jeden wiersz:

print("Hello Python world!")
Efektem wpisania polecenia: import Test będzie
Hello Python world!
lub
Traceback (most recent call last):
  File "", line 1, in 
    import Test
ImportError: No module named Test
Efekt zależy oczywiście od tego, czy Python znajdzie jeden z plików: Test.py lub Test.pyc. Python szuka programów (modułów) w katalogu bieżącym i w katalogach systemowych. Listę katalogów systemowych możemy odczytać w taki sposób:
>>> import sys
>>> sys.path
['C:\\Python27', 'C:\\Python27\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python27.zip', 
'C:\\python27\\DLLs', 'C:\\python27\\lib', 'C:\\python27\\lib\\plat-win', 
'C:\\python27\\lib\\lib-tk', 'C:\\python27', 'C:\\python27\\lib\\site-packages', 'C:\\python27\\lib\\site-packages\\PIL']
a dodać nowe katalogi w taki sposób:
>>> sys.path.append("skrypty")
>>> sys.path.append("C:\\users\\maestro\\skrypty")
Pierwsze polecenie dodaje podkatalog skrypty katalogu bieżącego, drugie korzysta z pełnej nazwy dodawanego katalogu. Dwie uwagi:
Spis treści

Pierwsze kroki, uruchamianie programów

Są dwa sposoby uruchomienia pogramów:
  1. Otwieramy konsolę, wpisujemy polecenie python nazwa_pliku_z_rozszerzeniem, nie zadziała jeżeli w bieżącym katalogu nie ma pliku python.exe i zmienna środowiskowa PATH nie zawiera katalogu z plikiem python.exe.
  2. W graficznej przeglądarce dysku (np. Explorer) klikamy w plik z rozszerzeniem py lub pyc, nie zadziała jeżeli wspomniane pliki nie są skojarzone z programem python.exe.
Uruchamiane w opisany sposób programy zachowują sie trochę inaczej niż uruchamiane poleceniem import w trybie interaktywnym:

Bywa, że plik źródłowy (np. fibonacci.py) zawiera definicje funkcji i klas mające uniwersalne zastosowanie, oraz korzystający z tych definicji kod do wykonania. Pożądane jest takie zachowanie:

Do takiego rozróżnienia można wykorzystać zmienną __name__, w module importowanym __name__ = nazwaModułu ("fibonacci"), w module wykonywanym __name__ = "__main__". W Pythonie zmienne i funkcje , których nazwy umieszczone są między podwójnymi podkreśleniami (np. __name__) mają specjalne przeznaczenie. Zostaną one opisane poźniej (w wykonywanym module dostępna jest np. zmienna __file__ zawierająca nazwę wykonywanego modułu).
Plik fibonacci.py:
# _*_ coding: utf-8 _*_
# obliczanie n-tego wyrazu w ciągu Fibonacciego
# uruchomienie: python fibonacci.py ktory_wyraz

def fibw(n):
   __doc__ = "funkcja oblicza n-ty wyraz ciagu Fibonacciego"
   a,b = 0,1
   i = 1
   while i<n:
      a,b = b,a+b
      i+=1
   return b
def fibl(n):
   __doc__ = "funkcja tworzy liste z ciagiem Fibonacciego"
   a,b = 0,1
   l=[]
   while b<n:
      l.append(b)
      a,b = b,a+b
   return l
      
if __name__=="__main__":
   n = input("Ktory wyraz ciagu Fibonacciego obliczyc: ")
   print(str(n)+"-ty wyraz ciagu Fibonacciego = "+str(fibw(n)))
Kod jest zapewne trochę niezrozumiały. Wiersz if __name__=="__main__": uzależnia wykonanie ostatnich dwóch wierszy od sposobu uruchomienia programu: import fibonacci lub python fibonacci.py.
Warto zwrócić uwagę na operator przypisania w wierszach 7, 10 i 15. Jest on specyficzny dla Pythona i bardzo wygodny. Po lewej stronie znaku operatora przypisania jest lista zmiennych oddzielonych przecinkami, po prawej stronie lista wyrażeń (tej samej długości!), też oddzielonych przecinkami. Jeżeli wyrażenia zawierają zmienne (wiersze 10 i 15), to wartość wszystkich wyrażeń jest obliczana dla dawnych wartości zmiennych.
Zamiana wartości elementów tablicy w C++:
pom = tab[i]
tab[i] = tab[j]
tab[j] = pom
Zamiana wartości elementów listy w Pythonie (w Pythonie nie ma tablic, lista to typ złożony najbardziej przypominający tablicę):
tab[i],tab[j] = tab[j],tab[i]

Do uruchamianego programu możemy przekazać parametry python nazwa_pliku_z_rozszerzeniem par_1 par_2.... By odczytać w programie przekazane parametry musimy zaimportowac moduł sys, lista przekazanych parametrów jest fragmentem listy sys.argv. Każdy parametr jest typu str (napis).

Wpisane polecenie Lista sys.argv
python []
python test.py ['test.py']
python test.py 1 Jan True ['test.py', '1', 'Jan', 'True']
Przykład. Plik silnie.py zawiera program obliczający i wypisujący na ekran silnie przekazanych parametrów. Nie jest odporny na błędne parametry, tzn. nie dające się skonwertować na typ int lub będące po konwersji liczbą ujemną.
import sys
for k in range(1,len(sys.argv)): #funkcja range(1,len(sys.argv)) zwraca listę liczb [1,...,len(sys.argv)-1]
    n = int(sys.argv[k]) #konwersja str => int
    i = 1
    s = 1
    while i<=n:
        s*=i
        i+=1
    print "%d! = %d" % (n,s) #formatowane wyświetlanie
    
python silnie.py 8 -4 31 =>
8! = 40320
-4! = 1
31! = 8222838654177922817725562880000000

Spis treści

Narzędzia do pisania programów

Można użyć dowolnego edytora, dużo wygodniej użyć edytora z kolorowaniem składni (gedit, notepad++). Kolorowanie składni i podpowiadanie argumentów metod i funkcji gwarantuje edytor będący częścią IDLE (= Integrated DeveLopment Environment) Pythona. Istnieją zewnętrzne IDE wspomagające pisanie programów w Pythonie, polecam wtyczkę PyDev do Eclipse'a. Opis instalacji wtyczki znajduje się tu. PyDev wspomaga również tworzenie projektów Django.
Bardzo dobrą opinie ma płatne IDE PyCharm.
Lista wykładów     Następny wykład