Utvikling av Pythonkode
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 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. IDLE 1.2.1 >>> 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,7) Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> print areal(w,7) 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 eksempel der vi lager en modul, util.py, med to metoder: getTextFile og storeTextFile:
""" Read / write text files """ def getTextFile(filename): try: file=open(filename,'r') res=file.read() file.close() return res except: print 'Trouble reading: '+filename return None def storeTextFile(filename,txt): try: file=open(filename,'w') file.write(txt) file.close() except: print 'Trouble writing to: '+filename T=getTextFile("mytext.txt") print T
Vi lagrer denne fila og ber om å få kjørt den, vi er fortsatt i det vinduet som viser vår modul, Run / Run Module. Dette fører til at Idle blir restartet og melder følgende:
>>> ================================ RESTART ================================ >>> dette er text >>>
der altså "dette er en text" er innholdet i fila vi leser.
Enkel testing
Modulen Pythontesting 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 å bruke vår util-modul i en annen modul som vi kaller versaler. Det eneste den skal gjøre er å lese en fil, lage store bokstaver (versaler) av teksten og skrive resultatet til en (annen) fil. Vi lagrer denne modulen i samme katalog som util, og kan lage den slik:
""" Leser filer, endrer teksten til versaler og skriver resultatet """ import util def lagVersaler(infil,utfil): T=util.getTextFile(infil) if T!= None: T=T.upper() util.storeTextFile(utfil,T) lagVersaler('mytext.txt','myVtext.txt')
Hvis vi kjører denne modulen, vil vi se at koden i util også kjører. Vi kan endre dette ved å skrive om util slik:
""" Read / write text files """ def getTextFile(filename): try: file=open(filename,'r') res=file.read() file.close() return res except: print 'Trouble reading: '+filename return None def storeTextFile(filename,txt): try: file=open(filename,'w') file.write(txt) file.close() except: print 'Trouble writing to: '+filename # basic testing if __name__=="__main__": T=getTextFile("mytext.txt") print T
if-testen (if __name__=="__main__") sjekker om det er modulen, util, som kjører som main eller om modulen brukes av en annen modul. Dette betyr at vi kan kjøre util direkte for å gjøre enkle funkjsonstester, før vi bruker den fra en annen modul.
Pythonpath
Vi kan fortelle operativsystemet hvor vi akter å plassere våre Pythonmoduler. Dersom vi gjør dette, kan vi referere modulene direkte ved navn. På samme måte som Java har sin classpath, har Python sin pythonpath. Måten å sette dem opp på er helt parallelle. Jeg åpner Settings/Controlpanel og starter System. Her velger jeg Advanced og klikker på knappen: Environment Variables. Så leter jeg etter PYTHONPATH i lista med overskriften System variables. Hvis den finnes så ber jeg om å få editere (EDIT) den. Hvis den ikke finnes så lager jeg ny (NEW).
På min maskin ser det i øyeblikket slik ut:
Jeg har alle mine Pythonmoduler samlet i en katalog: c:\articles\ml\pykode
Syntaksen i pathlista er slik at alle pather er adskilt med ; Husk at . representerer pather som er satt andre steder. Ta alltid med . - pathen, dersom du er i tvil.
Dersom dette er gjort kan vi f.eks. importere vår util1.py module som vi laget ovenfor direkte i Idle.
>>> import util1 >>> print util1.getTextFile('c:\\test\\mytext.txt')
dersom util1 ligger i samme katalog som den modulen som etetrspør den, trenger vi ikke pythonpath for å finne fram.
Pass på navnelikhet: Dersom du baserer deg på pythonpath og du har moduler med samme navn i ulike kataloger, kan du få tak i feil modul.
Fra kommandolinja
Dersom stien til Python katalogen er satt i PATH, kan du kjøre Python direkte fra kommandolinja. Se: Python Windows FAQ [2]
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.