Python
PythonPath
Python
Børre Stenseth

Utvikling av Pythonkode

Hva

Denne modulen beskriver noen enkle grep for å komme raskt igang med utvikling og kjøring av Pythonprogrammer.

Resonnementet er basert på begrepet modul. En Pythonmodul er en fil som inneholder metoder og eksekverbar kode. En modul kan kjøre og den kan refereres fra andre moduler. En modul er ikke det samme som en klasse.

Referanserammen for denne modulen er kjøring av Python på egen maskin. Når vi skal utvikle for nettløsninger er det en del ting i tillegg vi må passe på (rettigheter, linjeskift, eksekveringsdirektiv, debugging). Mer om dette i modulen: CGI

Jeg arbeider på Windows 7 og 10 og jeg bruker hovedsaklig Pythons egen IDLE-editor. Det er selvsagt mange andre måter å organisere arbeid med Python på enn det jeg har som referanse her.

Installasjon

Det er enkelt og ubyråkratisk å installere Python på en maskin. Last ned Python fra [1] og angi hvilken katalog installasjonen skal legges i. Python er deretter tilgjengelig i "All programs"-menyen.

Idle

Idle er Pythons egen kjøreomgivelse. Vi kan skrive kode direkt i Idle og få den eksekvert. Et eksempel på hvordan starten på en sesjon i Idle kan se ut:

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:19:30) [MSC v.1600 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> print('hello')
hello
>>>  

Vi kan bruke Idle til enkle oppgaver der vi skal ha utført noe direkte, eller dersom vi ønsker å teste ut noe. Vi kan importere andre moduler i Idle. En del av en sesjon:

>>> import math
>>> print(math.sqrt(25))
5.0
>>> def areal(h,b):
	return h*b

>>> print(areal(2,3))
6
>>> print(areal(w,3))
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    print(areal(w,3))
NameError: name 'w' is not defined
>>>  

Egen modul

Fra idle kan vi be om å få laget et nytt vindu, File / New Window. Det vinduet vi får opp er et vindu der vi kan editere Python. Dersom vi sparer innholdet i dette vinduet med ekstension .py, har vi laget en modul. Vi kan lage et veldig enkelt (og litt meningsløst) eksempel der vi lager en modul, util.py, med to metoder: Areal og Omkrets:

"""
Calculate circle
"""
import math
def Areal(radius):
    return math.pi*radius*radius
def Omkrets(radius):
    return math.pi*2*radius

Vi lagrer denne fila som utils.py. Så lager enda en module i et nytt vindu og sparer den:

import utils
r=10
print('Sirkel med radius',r,
      '\n\tAreal:',utils.Areal(r),
      '\n\tOmkrets:',utils.Omkrets(r))

Så kjører vi denne siste modulen (Run/Run module i Idle-menyen). Da får vi følgende utskrift i Idle-shell, Idles hovedvindu.

Sirkel med radius 10 
	Areal: 314.1592653589793 
	Omkrets: 62.83185307179586

Enkel testing

Modulen UnitTest inneholder materiale om testing av Pythonkode. Her skal vi bare peke på en enkel mekanisme som gjøre at vi kan kjøre en module i forskjellige modi, hvorav den ene kan brukes til rudimentær testing.

Anta at vi ønsker å teste vår utils modul før vi setter den i produksjon på den måten at vi bruker den fra andre moduler (som vi allerede har gjort ovenfor). Vi døper den om til UtilsMedTest.py og lager den slik:

"""
Calculate circle
"""
import math
def Areal(radius):
    return math.pi*radius*radius
def Omkrets(radius):
    return math.pi*2*radius
"""
code below is only run if this is main
ie. if this module is the starter(__main__)
"""
if __name__=="__main__":
    print(Areal(1))
    print(Omkrets(1))

Hvis vi kjører denne modulen, tester den, får vi

3.141592653589793
6.283185307179586

Vi skriver om "bruker-modulen", test1.py til test2.py

import utilsMedTest
r=10
print('Sirkel med radius',r,
      '\n\tAreal:',utilsMedTest.Areal(r),
      '\n\tOmkrets:',utilsMedTest.Omkrets(r))

Vi kjører den og får som før:

Sirkel med radius 10 
	Areal: 314.1592653589793 
	Omkrets: 62.83185307179586

Altså koden i UtilsMedTest.py som ligger under linja

if __name__=="__main__":

kjører ikke

Andre editorer

Det finnes en rekke editorer som handterer Pythonsyntaks, og det er fullt mulig å sette opp alternative utviklingsmiljøer til Idle. NotePad++ er helt grei som Pythoneditor. Merk imidlertid at du må være veldig nøye med å holde styr på indentering. Hele blokkstrukturen i Pythonkoden er basert på indentering.

Referanser
  1. Python Home page Python www.python.org/ 14-03-2010