Uvod¶
Ovaj dokument služi kao pomoć pri učenju osnova pythona u sklopu kolegija Računarstvo i praktikum na prvoj godini istraživačkog smjera studija fizike na Fizičkom odsjeku Prirodoslovno-matematičkog fakulteta Sveučilišta u Zagrebu. Pretpostavlja se osnovno znanje C-a. Pretpostavlja se da se primjeri izvršavaju na Unix-like operativnom sustavu (linux, OSX). Primjeri u pythonu i C-u će raditi i na Windows-ima, ali će ih trebati pokrenuti na odgovarajući način.
Interpreter¶
- Jezik python je napravljen tako da olakša (=ubrza) pisanje programa. Na primjer, nema deklariranja varijabli unaprijed, a dopušteno je miješanje tipova što znači dopušteno je
a=1
i nakon togaa="xy"
. - Programe napisane u C-u je potrebno prvo prevesti u strojni jezik, a zatim izvršiti. Python umjesto toga koristi “simultano prevođenje” tj. program se prevodi u strojni jezik malo po malo. Programi koji prevode sve odjednom nazivaju se compileri (npr.
gcc
), a programi koji simultano prevode nazivaju se interpreteri (npr.python
). Više na http://en.wikipedia.org/wiki/Interpreter_(computing). - 2 načina korištenja:
- interaktivna ljuska: ljusku pokrenemo s
python
, upisujemo/izvršavamo naredbu po naredbu, iz ljuske izađemo pomoću CTRL-d — ovakav način nam omogućuje brzo isprobavanje dijelova programa; - samostalni programi: upišemo cijeli program pomoću tekst-editora i snimimo ga npr. pod imenom
prg.py
zatim pokrenemo pomoćupython prg.py
. (Ako postavimo da je datotekaprg.py
izvršna, pomoćuchmod u+x prg.py
, i ako je prva linija programaprg.py
standardno zaglavlje (vidi Uobičajeno zaglavlje, Zadaća 6 (itertools.groupby())), tada se program može pokrenuti samo s./prg.py
.)
- interaktivna ljuska: ljusku pokrenemo s
- Postoje 2 glavne verzije python-a. Mogu se preuzeti (besplatne su) s https://www.python.org.
- python2 (npr. python 2.6, python 2.7)
- python3 (npr. python 3.4) - nije kompatibilan unazad s pythonom 2 (to znači da programe za python2 treba prepraviti ako ih se želi izvršiti pomoću pythona 3).
- Kako je python2 rašireniji, koristit ćemo njega.
- Gore spomenuti python interpreteri (oni s https://www.python.org) predstavljaju jednu (standardnu) implementaciju jezika python, napisanu u C-u koja se naziva CPython. Postoje i implementacije jezika python pisane u drugim jezicima: java (Jython), RPython (PyPy), C# (IronPython) itd. Korištenje neke druge implementacije omogućuje lagan pristup bibliotekama jezika u kojem je ta implementacija pisana (ali u tom slučaju neke standardne (CPython-ove) biblioteke mogu biti nepodržane). Također postoje i RPython (podskup pythona) i Cython (http://cython.org, prevoditelj iz pythona u C) kojima je glavni cilj ubrzavanje izvršavanja. U nastavku ćemo se baviti samo standardnom, CPython, implementacijom.
Kako učiti¶
- S obzirom da već imate praksu u C-u prilično je lako naučiti osnove pythona. Za tu svrhu možete koristiti primjere s ovih stranica ili neki od tutoriala:
- Početi koristiti python. Pri tome se korisno pomagati već gotovim receptima:
- npr. ako tražimo python print string as bytes, google nas uputi na http://stackoverflow.com/questions/12214801/print-a-string-as-hex-bytes gdje se nalazi gotov recept koji omogućuje ispis pojedinih byteova koji čine string (općenito stranica http://stackoverflow.com je dosta korisna).
- Ako ništa drugo ne upali, možete probati tražiti po službenim uputstvima za python:
- Za crtanje grafova u pythonu, koristan je dodatak
matplotlib
- Za rad s poljima brojeva brojeva, koristan je dodatak
numpy
- Gotove funkcije za numeriku, nalaze se u dodatku
scipy
- Za određene primjene dobro je znati da postoje tzv. regular expressions. Ovo izlazi, naravno, van okvira kolegija, iako ste najjednostavniji oblik regular expressiona već vidjeli prilikom korištenja
scanf()
npr.scanf("%[^\n]",s)
učitava us
sve do znaka za novi red.
Napomena
S pythonom i alatima numpy, scipy, matplotlib ćete se opet susresti u kolegijima Simboličko programiranje, Klasična mehanika, Kvantna fizika, ..., tako da trud koji uložite sada nije uzalud. Ipak, uputstava ima jako puno i ideja je proučiti detaljnije samo manji dio npr. primjere koji slijede ili neki od navedenih tutoriala, a ostale materijale koristiti kad i ako zatrebaju — kao rječnik ili telefonski imenik.