Fara í innihald

Python

Úr Wikibókunum
Python logo

Python er öflugt forritunartungumál sem er notað í mörgum forritum. Python er í flokki forritunarmála sem eru kölluð scripting mál. Í þeim flokki eru meðal annars Tcl, Perl, Ruby, Scheme og Java.[1]Ekki þarf að þýða Python kóða sérstaklega heldur gerist það sjálfkrafa þegar forritið er keyrt.[2]

Python styður margþætt forritunar viðmið, þar á meðal hlutbundna forritun, imperative og fallsforritun. Það er fullkomlega sveigjanlegt og hefur sjálfvirka minnis stjórnun. Eins og önnur sveiganleg forritunarmál er Python oft notað sem scripting mál en er þó ekki notað þannig á víðu sviði. Með því að nota verkfæri frá þriðja aðila er hægt að pakka Python kóða í sjálfstæða "executable" forrit. Til eru margir Python þýðendur fyrir mörg stýrikerfi.[3]

Mikilvægt markmið þróunaraðila er að gera notkun Python skemmtilegt. Það endurspeglast í uppruna nafnsins (sjónvarpsserían Monty Python's Flying Circus).[4]


Saga

[breyta]
Guido van Rossum

Python kom fyrst á markað árið 1991. Það var hannað af hollenska forritaranum Guido van Rossum hjá CWI (Centrum Wiskunde & Informatica) í Hollandi. Python var hannað sem arftaki ABC forritunarmálsins. Markmiðið var að hanna forrit sem gat brugðist við frábrigðum í forriti og tengdist við Amoeba operating system.

Árið 2000 var síðan gefið út Python 2.0 með mörgum nýjum eiginleikum. Meðal þeirra var „garbage collector “sem hreinsar vinnsluminnið af hlutum sem eru ekki lengur í notkun. Þar að auki fullnægir Python 2.0 skilyrðum Unicode. Helsta breytingin í nýju uppfærslunni var sú að nú gat hver sem er þróað Python forritunarmálið.

Eftir langan tíma í prófun var Python 3.0 gefið út árið 2008. Forritunarmálið í Python 3.0 virkar ekki með fyrstu og annari útgáfunni af Python. Þó hafa mörgum eiginleikum Python 3.0 verið bætt við Python 2.6 og 2.7.[5]

Sérkenni

[breyta]
  • Frítt og án höfundarréttar
  • Auðskiljanleg málskipan
  • Náttúruleg tjáning á kóða
  • Víðtækir gagnabankar
  • Fáanlegt í öll helstu stýrikerfi (t.d. Windows, Linux/Unix, OS/2, Mac, Amiga)

Verðlaun

[breyta]

Python hefur unnið TIOBE verðlaunin fyrir forritunartungumál ársins tvisvar (2007,2010)[6]

Sýnidæmi

[breyta]

Hérer hægt að keyra kóðann sem er hér fyrir neðan

Prufuforrit

# prufuforrit
print"Hello World"


Leikur

# simple Doodle Jump clone - use arrow keys to move

importsimplegui
importrandom

# helper functions
defcamera(pos):
"""convert from world coordinates to screen coordinates" ""
return[pos[0]-offset[0],pos[1]-offset[1]]

defheight(y):
"""account for inversion of vertical coordinates" """
globalh
returnh-y


classdoodle:
rebound=7
def__init__(self,pos):
"""initialize doodle" ""
self.pos=pos
self.vel=[0,0]

defnudge(self,x):
"""method to push doodle to left or right" ""
self.vel[0]+=x

defupdate(self):
"""update doodle in draw handler, all physics done here" ""
self.pos[0]=(self.pos[0]+self.vel[0])%w

# compute platforms oldy and newy before and after current step, respectively
oldy=min(height(self.pos[1])//100,num_plat-1)
newy=min(height(self.pos[1]+self.vel[1])//100,num_plat-1)

# bounce if you cross platform height, are going down and hit the actual platform
ifoldy!=newyandself.vel[1]>0andpl[oldy].existsandpl[oldy].left<self.pos[0]<pl[oldy].right:
sound.play()
self.vel[1]=min(-self.vel[1],-doodle.rebound)
ifrandom.random()>.7:#make the platform disappear occasionally
pl[oldy].exists=False
else:
self.pos[1]+=self.vel[1]

# accelerate due to gravity
self.vel[1]+=.1

# if doodle get near top of frame, update offset[1] to move camera up
clearance=300
ifself.pos[1]-offset[1]<clearance:
offset[1]=self.pos[1]-clearance

# restart if fall below screen
ifself.pos[1]-offset[1]>h+50:
offset[0],offset[1]=0,0
dd.pos[0],dd.pos[1]=w//2,h-200
dd.vel[1]=0
foriinrange(0,num_plat):
pl[i].exists=True

classplatform:

def__init__(self):
"""create a platform with left and right boundaries and existence flag" ""
globalw
width=random.randrange(100,160)
self.left=random.randrange(25,w-(25+width))
self.right=self.left+width
self.exists=True

# define callbacks for event handlers

defkeydown(key):
"""velocity model for left/right motion of doodle" ""
ifkey==simplegui.KEY_MAP["left"]:
dd.nudge(-2.5)
elifkey==simplegui.KEY_MAP["right"]:
dd.nudge(2.5)

defkeyup(key):
"""velocity model for left/right motion of doodle" ""
ifkey==simplegui.KEY_MAP["left"]:
dd.nudge(2.5)
elifkey==simplegui.KEY_MAP["right"]:
dd.nudge(-2.5)


defdraw(canvas):
"""update doodle position, draw doodle, draw platforms that are visible and their heights" ""
dd.update()
canvas.draw_circle(camera(dd.pos),5,2,"White")

# enumerate all multiples of 100 in range of offset[1] to offset[1] + height
forstepsinrange(100*(offset[1]//100),h+offset[1],100):

# convert steps to index for platforms
ind=height(steps)//100
ifind<num_platandpl[ind].exists:
canvas.draw_line(camera([pl[ind].left,steps]),camera([pl[ind].right,steps]),4,"Red")
canvas.draw_text(str(height(steps)),camera([w-50,steps]),12,"Green")
# canvas.draw_line(camera([0,steps]),camera([w,steps]),1, "White" )

# initialize stuff
w=800
h=600
frame=simplegui.create_frame("Doodle Jump",w,h)
sound=simplegui.load_sound("http://commondatastorage.googleapis /codeskulptor-assets/jump.ogg")#hamster republic

# set handlers
frame.set_keydown_handler(keydown)
frame.set_keyup_handler(keyup)
frame.set_draw_handler(draw)

# create 1000 random platforms
num_plat=1000
pl=[platform()foriinrange(0,num_plat)]

# make first platform cover the whole bottom of the window so you don't die immediately
pl[0].left=0
pl[0].right=w

# global offset store current camera information
offset=[0,0]

# create the doodle jumper
dd=doodle(camera([w//2,h-200]))


# get things rolling
frame.start()


Ókeypis bækur

[breyta]

Bækur fyrir byrjendur:

Tenglar

[breyta]

Heimildir

[breyta]
  1. Python.org
  2. orvitinn
  3. Wikipedia
  4. Docs. Python.org
  5. Wikipedia.org
  6. Tiobe