Þessi grein er einnig fáanleg sem hljóðskrá.
Þetta er frábær grein sem vert er að lesa.

Python (forritunarmál)

frá Wikipedia, ókeypis alfræðiorðabókinni
Fara í siglingar Fara í leit
python
merki
Grunngögn
Fyrirmyndir : margvíslegt
Útgáfuár: 20. febrúar 1991[1]
Hönnuður: Guido van Rossum[2]
Hönnuður: Python Software Foundation , Guido van Rossum[3]
Núverandi útgáfa 3.9.6[4] (28. júní 2021)
Vélritun : sterk , kraftmikil (" öndarritun ")
Mikilvægar útfærslur : CPython, Jython , IronPython , PyPy
Undir áhrifum frá: Algol 68[5] , ABC[6] , Modula-3[7] , C[8] , C ++[7] , Perl , Java , Lisp , Haskell[9] , APL , CLU , Dylan , Icon, Standard ML
Áhrif: Ruby , Boo , Groovy , Cython , JavaScript , Swift
Stýrikerfi : Pallur óháð [10]
Leyfi : Leyfi Python Software Foundation [11]
www.python.org

Python ([ ˈPʰaɪθn̩ ], [ ˈPʰaɪθɑn ], á þýsku einnig [ ˈPʰyːtɔn ]) er alhliða, venjulega túlkað , háttsett forritunarmál . [12] Það miðar að því að stuðla að læsilegum, hnitmiðuðum forritunarstíl. [13] Til dæmis eru blokkir ekki uppbyggðar með hrokkið sviga, heldur með innskotum.

Python styður nokkrar forritunarhugmyndir , svo sem: B. hlutbundin , þáttamiðuð og hagnýt forritun. Það býður einnig upp á kraftmikla vélritun . Eins og mörg kraftmikil tungumál er Python mikið notað sem forskriftarmál . Tungumálið er með opið þróunarlíkan sem byggir á samfélaginu og er studd af Python Software Foundation sem ekki er rekinn í hagnaðarskyni, sem heldur skilgreiningunni á tungumálinu í CPython tilvísunarútfærslu.

Þróunarsaga

Guido van Rossum , verktaki Python

Tungumálið var þróað í upphafi tíunda áratugarins af Guido van Rossum hjá Centrum Wiskunde & Informatica í Amsterdam sem arftaki forritunarmálsins ABC og var upphaflega ætlað dreifða stýrikerfinu Amoeba .

Eins og merkið gefur til kynna, þá nær nafnið ekki aftur til ormsættarinnar með sama nafni, Python , en vísaði upphaflega til enska grínistahópsins Monty Python . Í skjölunum eru því einnig nokkrar vísbendingar um sketsa úr Flying Circus . [14] Engu að síður festu tengsl við snákinn sig í sessi, sem kemur meðal annars fram í forritunarmálinu Cobra [15] og Python verkfærasettinu "Boa" [16] . Fyrsta heildarútgáfan birtist í janúar 1994 undir nafninu Python 1.0. Í samanburði við fyrri útgáfur voru sum hagnýt forritunarhugtök innleidd en þeim var síðar hætt. [17] Frá 1995 til 2000 birtust nýjar útgáfur sem stöðugt voru 1.2 vísað osfrv en Python 1.1.

Python 2.0 kom út 16. október 2000. Nýir eiginleikar innihalda fullkomlega hagnýt sorphirðu og stuðning við Unicode stafasettið. [18] Í útgáfu 2.6 var innbyggð hjálp sem hægt er að nota til að gefa til kynna hvaða kóðaröð er ekki lengur studd af eftirmanni Python 3 og er því ekki lengur keyranleg í útgáfum sem byggjast á henni. [19]

Python 3.0 (einnig Python 3000) kom út 3. desember 2008 eftir langt þróunartímabil. Það felur í sér djúpstæðar breytingar á tungumálinu, svo sem að fjarlægja uppsagnir í kennslusettum og úreltar byggingar. Þar sem þetta gerir Python 3.0 að hluta ósamrýmanlegt eldri útgáfum, [20] ákvað Python Software Foundation að halda áfram að styðja Python 2.7 samhliða Python 3 með nýjum útgáfum til loka árs 2019 (til að fá upplýsingar um 2-útgáfa útgáfur sem eiga eftir að vera gefið út, lok stuðnings og hjálpar við fólksflutninga sjá kafla End Python 2 ).

markmið

Python var hannað með sem mestan einfaldleika og skýrleika í huga. Þessu er fyrst og fremst náð með tveimur aðgerðum. Annars vegar kemst tungumálið yfir með tiltölulega fáum leitarorðum . [21] Á hinn bóginn er setningafræðin minnkuð og fínstillt til skýrleika. Þetta þýðir að hægt er að móta forskrift sem byggir á Python mun nákvæmari en á öðrum tungumálum. [22]

Við þróunina lagði Van Rossum mikla áherslu á staðlað bókasafn sem er viðráðanlegt og auðvelt að stækka. Þetta var afleiðing af slæmri reynslu hans af ABC tungumálinu, þar sem hið gagnstæða er raunin. [23] Þetta hugtak gerir það mögulegt að hringja í einingar í Python sem voru skrifaðar á öðrum forritunarmálum, til dæmis til að bæta upp veikleika í Python. Til dæmis er hægt að kalla venjur á tungumálum á vélstigi eins og C fyrir tímamótahluta. [24] Hins vegar er hægt að nota Python til að skrifa einingar og viðbætur fyrir önnur forrit sem bjóða upp á samsvarandi stuðning. Þetta er meðal annars raunin með Blender , Cinema 4D , GIMP , Maya , OpenOffice eða LibreOffice , PyMOL , SPSS , QGIS eða KiCad .

Python er margvíslegt tungumál. Þetta þýðir að Python neyðir forritarann ​​ekki inn í einn forritunarstíl heldur gerir það kleift að velja þá hugmyndafræði sem hentar best fyrir verkefnið. Hlutbundin og skipulögð forritun er að fullu studd, hagnýtur og þáttamiðaður forritun er studd af einstökum þáttum tungumálsins. Minni svæði sem ekki eru lengur notuð eru losuð með tilvísunartölu . Gagnagerðum er stjórnað á kraftmikinn hátt, sjálfvirkri truflun á stöðugri gerð eins og B. í C ++ er ekki til. Hins vegar styður Python útgáfa 3.5 og hærri valfrjálst gerðartilkynningar til að einfalda truflanir á stöðugri gerð með utanaðkomandi hugbúnaði eins og Mypy. [25] [26]

Gagnagerðir og mannvirki

Gagnagerðir og mannvirki

Python hefur mikinn fjölda grunngagnategunda. Til viðbótar við hefðbundinn reikning styður það einnig gagnsæ heiltölur af hvaða stærð sem er og flóknum tölum .

Venjulegar strengjaaðgerðir eru studdar. Í Python eru strengir hins vegar óbreytanlegir hlutir (eins og í Java ). Þess vegna eru aðgerðir sem eiga að breyta stafstreng - svo sem B. með því að skipta um stafi - skila alltaf nýjum stafstreng.

Í Python er allt hlutur: flokkar, gerðir, aðferðir, einingar o.fl. Gagnagerðin er alltaf tengd við hlutinn ( gildið ) en ekki breytu, þ.e. gagnategundum er úthlutað á kraftmikinn hátt, eins og með Smalltalk eða Lisp - og ekki eins og með Java.

Þrátt fyrir kraftmikla gerðastjórnun, þá inniheldur Python nokkrar tegundarskoðanir. Þetta er strangari en Perl en til dæmis minna strangt en Objective CAML . Óbeinar umbreytingar samkvæmt öndarritunarreglunni eru meðal annars skilgreindar fyrir tölugerðir þannig að til dæmis er hægt að margfalda flókna tölu með langri heiltölu án skýrrar gerðarbreytingar.

Með sniðforritinu % er óbein breyting á hlut í stafstreng. == símafyrirtækið athugar tvo hluti fyrir (gildi) jafnrétti. Rekstraraðilinn is athuga raunverulega auðkenni tveggja hluta. [27]

Tegundir safna

Python hefur nokkrar gerðir af söfnum , þar á meðal listum, túplum , settum og tengdum fylki (orðabækur). Listar, tvíburar og strengir eru röð (röð, reitir ) og nánast allir þekkja sömu aðferðir: þú getur endurtekið yfir persónurnar í keðju sem og yfir þætti listans. Það eru líka óbreytanlegir hlutir sem ekki er hægt að breyta eftir að þeir hafa verið búnir til. Listar eru t.d. B. stækkanlegir reitir en túplar og strengir hafa fasta lengd og eru óbreytanlegir.

Tilgangurinn með slíkri óbreytileika fer m.a. B. ásamt orðabækur , gagnategund sem einnig er þekkt sem tengd fylki . Til að tryggja samkvæmni gagna verða lyklarnir í orðabókinni að vera af „óbreytanlegri“ gerð. Gildin sem skráð eru í orðabókina geta hins vegar verið af hvaða gerð sem er.

Sett eru sett af hlutum og í CPython frá útgáfu 2.4 í venjulegu tungumálasviðinu. Þessi gagnauppbygging getur hýst hvaða fjölda hluta sem er (mismunandi í pörum) og veitir settar aðgerðir eins og meðaltal , mismun og sameiningu .

Hlutakerfi

The Python gerð Kerfið er sniðin að stéttaskiptingar. Þrátt fyrir að innbyggðu gagnategundirnar séu ekki stranglega mælt flokkar , þá geta flokkar erft frá gerð. Þannig geturðu lengt eiginleika stafstrengja eða orðabóka - þar á meðal heiltölur. Python styður marga arfleifð .

Tungumálið styður beint meðhöndlun tegunda og flokka. Hægt er að lesa upp (ákvarða) gerðir og bera þær saman og haga sér eins og hlutir - í raun eru gerðirnar (eins og í Smalltalk) sjálfar hlutur. Hægt er að draga út eiginleika hlutar sem orðabók.

setningafræði

Eitt af hönnunarmarkmiðunum fyrir Python var að gera frumkóðann auðvelt að lesa. Leiðbeiningarnar nota oft ensk leitarorð þar sem önnur tungumál nota tákn. Að auki hefur Python færri setningafræðilega uppbyggingu en mörg önnur skipulögð tungumál, svo sem C , Perl eða Pascal :

  • tvö lykkjuform
    • for að ítreka yfir þætti raðsins
    • while að endurtaka lykkju svo framarlega sem rökrétt tjáning er sönn.
  • Útibú
    • if … elif … else fyrir útibú

Í síðasta lið, önnur forritunarmál bjóða einnig upp á switch og / eða goto . Þetta voru vinstri út í hag sýnilegur í Python og verður varpað með if býr eða öðrum valkostum tré (sneiðar, orðabækur). Ólíkt mörgum öðrum tungumálum, for og while lykkjur geta haft else grein. Þetta er aðeins framkvæmt þegar lykkjan hefur verið keyrð í gegn og er ekki hætt með break .

Uppbygging með innrætingu

Eins og Miranda og Haskell, notar Python inndrátt sem uppbyggingarþátt. Þessi hugmynd var fyrst lögð fram af Peter J. Landin og kölluð utanaðkomandi stjórn af honum. Á flestum öðrum forritunarmálum eru kubbar merktir með sviga eða leitarorðum, en bil af mismunandi stærðum utan strengja hefur enga sérstaka merkingarfræði. Á þessum tungumálum er innsláttur til að auðkenna reit leyfilegur og venjulega óskað, en ekki krafist. Fyrir forritun nýliða er hins vegar litið á nauðsyn þess að hafa læsilegan stíl sem kost.

Sem dæmi er útreikningur á verksmiðju heiltölu, einu sinni í C og einu sinni í Python:

Faktorísk fall í C:

 int factorial ( int x ) {
    ef ( x <= 1 )
        skila 1 ;

    skila x * factorial ( x - 1 );
}

Sama fall í Python:

 def factorial ( x ):
    ef x <= 1 :
        skila 1

    skila x * factorial ( x - 1 )

Hins vegar er mikilvægt að tryggja að innskotin séu þau sömu um allan dagskrártextann. Blönduð notkun bila og flipa getur leitt til vandamála vegna þess að Python -túlkurinn samþykkir flipa með átta bili. Það fer eftir stillingum ritstjórans og hægt er að birta flipa með færri en átta bilum, sem getur leitt til setningafræðilegra villna eða óæskilegrar uppsetningar forrita. Sem fyrirbyggjandi ráðstöfun geturðu látið ritstjórann skipta um stafi flipa fyrir ákveðinn fjölda bila. Python dreifingin inniheldur tabnanny eininguna í venjulegu bókasafninu , sem hjálpar til við að þekkja og leiðrétta blöndun flipa og bila.

Hins vegar, eins og í C, er einnig hægt að móta þáttunaraðgerðina í einni línu með þrískiptum stjórnanda :

Aðgerðarhlutverkið í C:

 int factorial ( int x ) {
    skila x <= 1 ? 1 : x * factorial ( x - 1 );
}

Aðgerðaraðgerðin í Python:

 def factorial ( x ):
    skila 1 ef x <= 1 annað x * factorial ( x - 1 )

Hagnýtur forritun

Kókos [28] og aðrar viðbætur gera hagnýta forritun í Python auðveldari. Að auki er þetta einnig hægt að gera með hefðbundnum Python:

Tjáningafræðilegir setningafræðilegir þættir fyrir hagnýt forritun einfalda vinnu með listum og öðrum tegundum safna. Ein slík einföldun er listatákn, sem kemur frá Haskell hagnýtu forritunarmálinu; hér þegar reiknað er út fyrstu fimm kraftana af tveimur:

 tölur = [ 1 , 2 , 3 , 4 , 5 ]
máttur tveggja = [ 2 ** n fyrir n í tölum ]

Þar sem aðgerðir geta birst sem röksemdir í Python getur maður einnig tjáð flóknari framkvæmdir, svo sem framhaldsstíginn .

lambda leitarorð Python gæti afvegaleitt suma hagnýta forritunaráhugamenn. Slíkir lambda blokkir í Python geta aðeins innihaldið orðasambönd, ekki fullyrðingar. Þetta þýðir að slíkar fullyrðingar eru almennt ekki notaðar til að skila falli. Þess í stað er venjuleg venja að skila nafni staðbundinnar aðgerðar. Eftirfarandi dæmi sýnir þetta með því að nota einfalda aðgerð sem byggist á hugmyndum Haskell Brooks Curry :

 def add_and_print_maker ( x ):
    def temp ( y ):
        prenta ( " {} + {} = {} " . snið ( x , y , x + y ))

    aftur afleysingamanneskja

Þetta gerir einnig curry auðvelt að brjóta niður almennu fallhlutina í vandamálasérhæfa hluti. Hér er einfalt dæmi:

 def curry ( func , known_argument ):
    skila lambda unknown_argument : func ( unknown_argument , known_argument )

Ef curry aðgerðin er kölluð, býst hún við falli með tveimur nauðsynlegum breytum auk breytuúthlutunar fyrir aðra færibreytu þessarar aðgerðar. curry frá curry er fall sem gerir það sama og func , en þarf aðeins eina færibreytu.

Lokanir eru einnig auðveldlega mögulegar með ofangreindum aðferðum í Python. Einfalt dæmi um stafla , táknað með lista að innan:

 def stack ():
    l = []

    def pop ():
        ef ekki er_empty ():
            skila l . popp ()

    def ýta ( þáttur ):
        l . bæta við ( þáttur )

    def er_empty ():
        skila len ( l ) == 0

    skila poppi , ýta , er_laus

popp , ýta , er_empty = stack ()

Á þennan hátt færðu aðgerðarhlutina þrjá pop , push , is_empty til að breyta stafla eða athuga hvort innihaldsefni séu án þess að geta breytt l beint.

Undantekning meðhöndlun

Python notar mikið undantekningartilhöndlun (enska undantekningameðferð) sem leið til að prófa villuskilyrði. Þetta er svo samþætt í Python að stundum er jafnvel hægt að ná setningafræðilegum villum og meðhöndla þær á keyrslutíma.

Undantekningar hafa nokkra kosti umfram aðrar aðferðir við meðhöndlun villna sem venjulega eru notaðar við forritun (svo sem villur fyrir skilaskil og alþjóðlegar stöðubreytur). Þau eru thread- örugg og geta hæglega aðstæður til hæsta program stigi eða meðhöndlaðar á öðrum vettvangi í aðgerð kalla röð. Rétt notkun undantekninga meðhöndlunar þegar aðgangur er að kraftmiklum auðlindum auðveldar einnig að forðast ákveðnar glufur í öryggi út frá keppnisaðstæðum sem geta komið upp þegar aðgangur er byggður á stöðufyrirspurnum sem eru þegar úreltar.

Python nálgunin bendir til þess að nota undantekningar þegar villuskilyrði geta komið upp. Þessi meginregla er til dæmis gagnleg við smíði öflugra inntaksbeiðna:

 á meðan satt :
    num = inntak ( " Sláðu inn heiltölu:" )

    reyna :
        num = int ( num )
    nema ValueError :
        prenta ( "Númer, takk!" )
    annað :
        brot

Þessi hluti forritsins biður notandann um númer þar til hann slær inn stafstreng sem hægt er að breyta í heiltölu með int() . Meðhöndlun undantekninga kemur í veg fyrir að röng færsla leiði til keyrsluvillu sem neyðir forritið til að hætta.

Einnig er hægt að greina og meðhöndla truflunarmerki ( SIGINT , oft Ctrl + C), sem ekki er tekið tillit til hér, með undantekningahöndlun í Python ( except KeyboardInterrupt: … ).

Staðlað bókasafn

Öfluga staðlaða bókasafnið er einn stærsti styrkur Python, sem gerir það hentugt fyrir mörg forrit. Meirihluti þeirra er sjálfstæður pallur, þannig að jafnvel stærri Python forrit keyra oft á Unix , Windows , macOS og aðra kerfi án breytinga. Hægt er að bæta einingum staðlaða bókasafnsins við einingar skrifaðar í C ​​eða Python.

Staðlaða bókasafnið er sérstaklega sniðið fyrir internetforrit, með stuðningi við fjölda staðlaðra sníða og samskiptareglna (svo sem MIME og HTTP ). Einingar til að búa til myndrænt notendaviðmót, til að tengjast gagnagrunnum í tengslum við og til að vinna með venjulegar tjáningar eru einnig innifalin.

Grafísk notendaviðmót (GUI)

Með hjálp meðfylgjandi einingarinnar Tkinter er fljótt hægt að búa til grafískt notendaviðmót (GUI) með Tk í Python (eins og í Perl og Tcl ). Það eru líka ýmsar aðrar umbúðir frá öðrum veitendum. Þau veita tengingar ( English Tungumál Bindingar) til GUI toolkits eins B. PyGTK , PyQt , wxPython , PyObjC og Py FLTK eru fáanleg.

Til viðbótar við Tkinter er eining til að teikna skjaldbökurit grafík einnig innifalin.

Dæmi fyrir Tkinter eininguna

Dæmi um einfaldan Tkinter glugga
frá tkinter innflutningi *

gluggi = Tk ()
glugga . rúmfræði ( "200x100" )
label = label ( gluggi , texti = "Halló heimur!" )
merki . pakki ()

def stjórn ():
    glugga . eyðileggja ()

hnappur = tk . Hnappur ( gluggi , texti = "OK" , skipun = skipun )
hnappinn . pakki ()

Dæmi um Turtle grafíkareininguna

Niðurstaða tilgreinds frumkóða
innflutt skjaldbaka
frá hraða innflutnings skjaldbaka , endurstilla , fara

endurstilla ()
hraði ( 0 )
skjaldbaka . x = - 200
skjaldbaka . y = 200

meðan skjaldbaka . j ! = - 200 :
    fara ( skjaldbaka . x , skjaldbaka . y )
    skjaldbaka . x = - skjaldbaka . x
    skjaldbaka . y = - skjaldbaka . y
    fara ( skjaldbaka . x , skjaldbaka . y )
    fara ( 0 , 0 )
    skjaldbaka . y = - skjaldbaka . y
    skjaldbaka . x = - skjaldbaka . x
    skjaldbaka . y - = 5

Meiri grafík

dæmi

Samanburður flokkunarreiknirinn Quicksort er hér gefinn sem lítið dæmi:

 def quicksort ( listi ):
    ef len ( listi ) <= 1 :
        aftur lista

    snúningsþáttur = listi . popp ()
    tenglar = [ frumefni fyrir þátt í lista ef þáttur < snúningsþáttur ]
    hægri = [ frumefni fyrir þátt í lista ef frumefni > = snúningsþáttur ]

    skila snöggsorti ( vinstri ) + [ snúningsþáttur ] + skyndisviði (til hægri )

Sérstaklega gerir listatáknið fyrir breyturnar til vinstri og hægri kleift að sýna samning. Til samanburðar er endurtekin samsetning þessara tveggja lína:

 ...
    vinstri , hægri = [], [] # búðu til tóma lista fyrir vinstri og hægri
    snúningsþáttur = listi . pop () # taktu síðasta atriðið af listanum sem tilvísun

    fyrir þátt í lista : # endurtekið yfir þá þætti listans sem eftir eru ...
        ef frumefni < pivotelement : # ... og berðu saman við snúningsþáttinn
            eftir . bæta við ( þáttur ) # ef smærri, þá bæta við listann til vinstri
        annað :
            rétt . append ( element ) # annars, ef ekki minni, þá skaltu bæta við listann til hægri
...

Þetta er aðeins eitt dæmi um pappírsvinnuna sem vistuð er með listaskráningunni. Í raun er endurtekna samsetningin hraðari í þessu tilfelli þar sem „listinn“ reiturinn er endurtekinn aðeins einu sinni í hverri keyrslu en ekki tvisvar sinnum eins og í listatákninu.

Gagnvirk notkun

Eins og Lisp , Ruby , Groovy og Perl, styður Python túlkurinn einnig gagnvirkan hátt þar sem hægt er að slá inn tjáningar á flugstöðinni og hægt er að skoða niðurstöðurnar strax. Þetta er ekki aðeins ánægjulegt fyrir nýliða sem eru að læra tungumálið, heldur einnig fyrir reynda forritara: hægt er að prófa víða kóða gagnvirkt áður en þeir eru með í viðeigandi forriti.

Þar að auki er með Python Shell, stjórnlínutúlkur fyrir ýmis Unix-eins tölvustýrikerfi í boði, auk klassískra Unix skelskipana með beinu inntaki í Python lögun geta séð um. IPython er vinsæl gagnvirk Python skel með stóraukinni virkni.

Framkvæmdir

Til viðbótar við tilvísunarframkvæmd CPython, er Python túlkur innleiddur á Java sem kallast Jython , sem bókasafn Java keyrsluumhverfis er gert aðgengilegt fyrir Python. Til viðbótar við túlkana eru til þýðendur sem þýða Python kóða yfir á annað forritunarmál: Með Cython er hægt að þýða Python kóða í skilvirkar C viðbætur eða tengja ytri C / C ++ kóða. Það er líka IronPython þýðandinn fyrir .NET eða Mono pallinn. Til að nota Python sem forskriftarmál fyrir forrit í C ++ eru Boost Python bókasafnið eða (í nýrri verkefnum) Cython aðallega notað. Python parser fyrir Parrot og just-in-time compiler fyrir Python skrifað í Python, PyPy , sem var fjármagnað af ESB, eru einnig í þróun. Það er líka til Python túlkur fyrir örstýringar sem kallast MicroPython . [29]

Þróunarumhverfi

Til viðbótar við IDLE , sem er oft sett upp með Python og samanstendur aðallega af textaumhverfi og skel , hafa einnig verið þróuð nokkur fullkomin þróunarumhverfi (IDE) fyrir Python, til dæmis Eric Python IDE , Spyder eða PyCharm . Það eru líka viðbætur fyrir stærri IDE eins og Eclipse , Visual Studio og NetBeans . Einnig er hægt að aðlaga textaritstjóra fyrir forritara eins og Vim og Emacs fyrir Python: Einföld Python ham er þegar samþætt og hægt er að bæta við þægilegri viðbótum.

Fyrir hin ýmsu GUI tól , svo sem B. Tkinter ( GUI-Builder ), WxPython ( wxGlade ), PyQt ( Qt Designer ), PySide , PyGTK ( Glade ), Kivy eða PyFLTK það eru nokkrir ritstjórar sem hægt er að setja upp grafísk notendaviðmót á tiltölulega einfaldan hátt.

Pakkastjórnun

Python styður við gerð pakka; distutils og setuptools hjálpa til við þetta . Pakkarnir eru geymdir á PyPI, Python pakkavísitölunni og sóttir þaðan til uppsetningar. Pakkastjórinn sem venjulega er notaður er pip eða, í gömlum kerfum, easy_install . Pakkaútgáfum af Anaconda (Python dreifingu) er stjórnað af pakkastjórnunarsamstæðu . [30]

Dreifið og notið

Python er ókeypis í boði fyrir algengustu stýrikerfi og er innifalið í venjulegu umfangi flestra Linux dreifinga. Til að samþætta Python við vefþjóna er WSGI notað á vefþjóninum, sem forðast ókosti CGI . WSGI veitir alhliða viðmót milli vefþjóns og Python (ramma).

Fjöldi ramma vefforrita notar Python, þar á meðal Django , Pylons , SQLAlchemy , TurboGears , web2py , Flask og Zope . Það er einnig Python túlkur fyrir Symbian stýrikerfið, þannig að Python er fáanlegt í ýmsum farsímum . Í útgáfu 2.5.1 er Python hluti af AmigaOS 4.0.

Viðskiptaleg notkun

Vel þekkt viðskiptaverkefni, eins og Google og YouTube , byggjast að hluta til á Python. [31] Tungumálið er einnig stundum notað í leikjaiðnaðinum, til dæmis í EVE Online , World in Conflict og Civilization IV .

Í náminu

Python er oft notað í kennslu vegna þess að Python er annars vegar byrjendavænt, en hins vegar er það líka nógu öflugt og öflugt til að koma fræðilegum grunnatriðum forritunar og til nútíma forrita upp í flókna gagnagreiningu, grafíska forritun eða gagnagrunn forrit til að þróa. [32] [33] [34] [35] [36] [37] Kennslubækur sem beinast beinlínis að ungu fólki án stuðnings við forritunarreynslu og undirstrika þessa þróun. [38]

Sem hluti af 100 dollara fartölvuverkefninu er Python notað sem venjulegt tungumál notendaviðmóts. Þar sem $ 100 reiknivélin er hönnuð fyrir skólanám fyrir börn, ætti Python kóðinn sem er í gangi að birtast með því að ýta á hnapp þegar „ grafískurnotendaviðmót „Sugar“ er hannað í þessum tilgangi. [39] Þetta er ætlað að gefa börnum tækifæri til að upplifa upplýsingatæknina á bak við það í raunveruleikanum og að líta „á bak við tjöldin“ að vild.

Upphaflega var ætlað að afhenda Raspberry Pi eins borð tölvuna (Python túlk) með Python túlki sem er samþættur í ROM . [40] Enn í dag er Python eitt vinsælasta tungumálið fyrir Raspberry Pi. Staðlaða stýrikerfi þess, Raspberry Pi OS, er með stóru Python bókasafni til að stjórna vélbúnaðinum.

Python er notað í tölvunarfræðimenntun í skólum og háskólum um allan heim. Fjöldi (ókeypis) fræðilega hannaðra netnámsvettvanga á Python eru nú fáanlegir fyrir skóla og sjálfsnám frá 6. bekk og áfram - aðallega á nokkrum tungumálum. Netnámskeiðið Computer Science Circles z. B. er veitt af University of Waterloo í Kanada. Þýska útgáfan er rekin af þýsku innlendum upplýsingatæknikeppnunum. [41] TigerJython, hýst af Kennaraháskólanum í Bern, er fyrst og fremst notað í Sviss fyrir upplýsingatíma. [42]

Í vísindum

Í vísindasamfélaginu nýtur Python útbreiðslu, aðallega vegna þess að auðvelt er að komast inn í forritunina og fjölbreytt úrval fræðasafna. Tölulegir útreikningar og sjónræn úrvinnsla niðurstaðna í myndritum eru að mestu leyti unnin með NumPy og Matplotlib . Anaconda og SciPy safna mörgum vísindalegum Python bókasöfnum saman og auðvelda þeim aðgang. Með TensorFlow , Keras , Scikit læra , PyTorch og aðrir, það eru stór bókasöfn til rannsókna og notkun vél nám og djúpt nám ( gervigreind ).

Lok Python 2

Stuðningi við Python 2 er lokið. Síðasta 2-útgáfan var 2.7.18 20. apríl 2020; [43] [44] seit diesem Datum wird Python 2 nicht mehr unterstützt. [45] [46] Es gibt aber vielfältige und umfangreiche Dokumentationen zum Umstieg [47] [48] [49] und auch Tools, die bei der Migration helfen [50] oder es ermöglichen, Code zu schreiben, der mit Python 2 und 3 funktioniert. [51] [52] [53] [54] [55]

Kritik

Bei der Definition von Methoden muss der Parameter self , der der Instanz entspricht, deren Methode aufgerufen wird, explizit als Parameter angegeben werden. Dies wird von Andrew Kuchling, Autor und langjährigem Python-Entwickler [56] , als unelegant und nicht objektorientiert empfunden. [57] Python-Schöpfer van Rossum verweist hingegen darauf, dass es nötig sei, um bestimmte wichtige Konstrukte zu ermöglichen. [58] Einer der Python-Grundsätze lautet zudem „Explicit is better than implicit“. [59]

Bis zur Version 3.0 wurde kritisiert, dass in einer Methodendefinition der Aufruf der Basisklassenversion derselben Methode die explizite Angabe der Klasse und Instanz erfordert. Dies wurde als Verletzung des DRY-Prinzips („ Don't repeat yourself “) gesehen; außerdem behinderte es Umbenennungen. In Python 3.0 wurde dieser Kritikpunkt behoben. [60]

Auf Multiprozessor -Systemen behindert der sogenannte Global Interpreter Lock (GIL) von CPython die Effizienz von Python-Anwendungen, die softwareseitiges Multithreading benutzen. Diese Beschränkung existiert unter Jython oder IronPython allerdings nicht. Bislang ist von offizieller Seite nicht geplant, den GIL zu ersetzen. Stattdessen wird empfohlen, mehrere miteinander kommunizierende Prozesse anstelle von Threads zu verwenden. [61] [62]

In den vorherrschenden Implementationen ist die Ausführungsgeschwindigkeit niedriger als bei vielen kompilierbaren Sprachen, [63] aber ähnlich wie bei Perl , [64] PHP , [65] Dart [66] und Ruby . [67] Das liegt zum Teil daran, dass bei der Entwicklung von CPython der Klarheit des Codes gegenüber der Geschwindigkeit Vorrang eingeräumt wird. [68] Man beruft sich dabei auf Autoritäten wie Donald Knuth und Tony Hoare , die von verfrühter Optimierung abraten. Wenn Geschwindigkeitsprobleme auftreten, die nicht durch Optimierung des Python-Codes gelöst werden können, [69] werden stattdessen JIT -Compiler wie PyPy verwendet oder zeitkritische Funktionen in maschinennähere Sprachen wie C oder Cython ausgelagert.

Literatur

Für den Einstieg

Referenzen

Weiterführendes

  • Luciano Ramalho: Fluent Python. Clear, concise, and effective programming . 1. Auflage. O'Reilly, Sebastopol CA (ua) 2015, ISBN 978-1-4919-4600-8 , S.   744 ( Inhaltsverzeichnis [PDF]).
  • Gregor Lingl: Python für Kids , bhv, 4. Auflage 2010, ISBN 3-8266-8673-X .
  • Farid Hajji: Das Python-Praxisbuch , Addison-Wesley, 1. Auflage 2008, ISBN 978-3-8273-2543-3 .
  • Hans P. Langtangen: Python Scripting for Computational Science , Springer, 3. Auflage 2008, ISBN 3-540-43508-5 .
  • Michael Weigend: Objektorientierte Programmierung mit Python , mitp-Verlag, 1. Auflage 2006, ISBN 3-8266-0966-2 .
  • Felix Bittmann: Praxishandbuch Python 3. Konzepte der Programmierung verstehen und anwenden . 1. Auflage. Books on Demand, Norderstedt 2020, ISBN 978-3-7519-0058-4 , S.   240 ( Inhaltsverzeichnis ).

Weblinks

Commons : Python – Sammlung von Bildern, Videos und Audiodateien
Wikibooks: Python 2 unter Linux – Lern- und Lehrmaterialien

Tutorials

Für Anfänger

Für Fortgeschrittene

Für Kinder

Einzelnachweise

  1. Historique et licence . (abgerufen am 19. August 2016).
  2. docs.python.org . (abgerufen am 3. Juli 2019).
  3. docs.python.org . (abgerufen am 19. August 2016).
  4. Python 3.9.6, 3.8.11, 3.7.11, and 3.6.14 are now available . 28. Juni 2021 (englisch, abgerufen am 29. Juni 2021).
  5. impythonist.wordpress.com . (abgerufen am 19. August 2016).
  6. Why was Python created in the first place? . Python Software Foundation (abgerufen am 22. März 2017).
  7. a b Classes The Python Tutorial . Python Software Foundation.
  8. An Introduction to Python for UNIX/C Programmers .
  9. Functional Programming HOWTO .
  10. www.python.org . (abgerufen am 19. August 2016).
  11. docs.python.org .
  12. What is Python Good For? . In: General Python FAQ . Python Foundation. Abgerufen am 5. September 2008.
  13. What is Python? Executive Summary . In: Python documentation . Python Foundation. Abgerufen am 21. März 2007.
  14. Offizielle Python FAQ , sowie Python Tutorial, Kapitel 1
  15. The Cobra Programming Language . In: cobra-language.com .
  16. Boa Constructor home . In: boa-constructor.sourceforge.net .
  17. Guido van Rossum: Kommentar zur Entfernung einiger funktionaler Konzepte. Abgerufen am 11. August 2014 (englisch).
  18. A. Kuchling, Moshe Zadka: Dokumentation Python 2.0. Python Software Foundation, abgerufen am 11. August 2014 (englisch).
  19. heise.de: Python 2.6 öffnet Wege zu Version 3 vom 2. Oktober 2008, abgerufen am 4. Oktober 2008
  20. Guido van Rossum: Dokumentation Python 3.0. Python Software Foundation, 14. Februar 2009, abgerufen am 11. August 2014 (englisch).
  21. 2. Lexical analysis Python 3.7.2rc1 documentation. (englisch)
  22. Marty Alchin: Pro Python . Hrsg.: Apress. 2010, ISBN 978-1-4302-2757-1 , S.   6 (englisch).
  23. Bill Venners: Interview mit Guido van Rossum. Artima, 13. Januar 2003, abgerufen am 15. August 2014 (englisch).
  24. Verwendung fremdsprachiger Module. Python Software Foundation, abgerufen am 10. September 2019 (englisch).
  25. Guido van Rossum , Ivan Levkivskyi: PEP 483 -- The Theory of Type Hints. Python Software Foundation, 19. Dezember 2014, abgerufen am 18. Oktober 2020 (englisch).
  26. Guido van Rossum , Jukka Lehtosalo, Łukasz Langa: PEP 484 -- Type Hints. Python Software Foundation, 29. September 2014, abgerufen am 18. Oktober 2020 (englisch).
  27. Mark Lutz, David Ascher: Learning Python, 2nd Edition . In: Safari Books Online . O'Reilly Media, Inc.. 23. Dezember 2003.
  28. Coconut (Erweiterung zu Pyhon)
  29. MicroPython – Python for microcontrollers . In: micropython.org .
  30. Conda documentation. Abgerufen am 25. Februar 2016 (englisch).
  31. Quotes about Python . Abgerufen am 25. Juni 2011.
  32. Computer Science Circles – ein kostenfreier Dienst des Centre for Education in Mathematics and Computing, University of Waterloo.
  33. Programmieren lernen mit Python . App Camps gemeinnützige Unternehmergesellschaft, Hamburg
  34. Programming for Data Science with Python , Udacity
  35. Einstieg ins Programmieren mit Python . Web 2 Unterricht, 3. September 2017
  36. Python – die Programmiersprache für imperative und objektorientierte Programmierung . Bildungsserver Berlin-Brandenburg
  37. Programmieren mit Python . Bildungsserver Rheinland-Pfalz
  38. Man vergleiche z. B. Programmieren supereasy – Einfacher Einstieg in Scratch und Python von Carol Vorderman und Jon Woodcock, Dorling Kindersley Verlag, oder Python 4 Kids von Gregor Lingl, Mitp Verlag
  39. OLPC- Wiki : „ Python für den 100-Dollar-Laptop
  40. Karin Zühlke: Erstmals »Live on stage«: Farnell zeigt den Raspberry Pi Nachwuchs .
  41. Programmieren lernen . Bundesweite Informatikwettbewerbe. Ein Projekt der Gesellschaft für Informatik e. V., des Fraunhofer-Verbunds IUK-Technologie und des Max-Planck-Instituts für Informatik.
  42. Flyer TigerJython – Programmierkonzepte mit Python . Pädagogischen Hochschule Bern
  43. Python Insider: Python 2.7.18, the last release of Python 2
  44. Programmiersprachen: Lang lebe Python 3 – finales Release von Python 2
  45. Python 2 series to be retired by April 2020 , Presseerklärung der Python Software Foundation, 20. Dezember 2019.
  46. Python 2.7 bekommt letztes Release im April 2020 , golem.de, 30. Dezember 2019.
  47. Offizielles HOWTO: https://docs.python.org/3.7/howto/pyporting.html
  48. The Conservative Python 3 Porting Guide: https://portingguide.readthedocs.io/en/latest/
  49. Supporting Python 3: An in-depth guide: http://python3porting.com/bookindex.html
  50. 2to3: https://docs.python.org/2/library/2to3.html
  51. six: http://pypi.python.org/pypi/six/ und https://pythonhosted.org/six/
  52. Python-Modernize: https://python-modernize.readthedocs.io/en/latest/
  53. Python-Future/futurize: http://python-future.org/
  54. Sixer: https://pypi.python.org/pypi/sixer
  55. 2to6: https://github.com/limodou/2to6
  56. AM Kuchling. Abgerufen am 1. September 2020 (englisch).
  57. http://www.amk.ca/python/writing/warts.html ( Memento vom 2. Oktober 2003 im Internet Archive )
  58. Guido van Rossum: Why explicit self has to stay
  59. Tim Peters: The Zen of Python. Python Software Foundation, 19. August 2004, abgerufen am 12. August 2014 (englisch).
  60. PEP 3135 -- New Super . In: Python.org .
  61. Library and Extension FAQ — Python 3.7.0 documentation . In: Python.org .
  62. Guido van van Rossum: It isn't Easy to Remove the GIL . In: Artima.com .
  63. Python–C . Archiviert vom Original am 26. Dezember 2015. Abgerufen am 25. Dezember 2015.
  64. Python–Perl . Archiviert vom Original am 26. Dezember 2015. Abgerufen am 25. Dezember 2015.
  65. Benchmark-Vergleich Python–PHP . Archiviert vom Original am 26. Dezember 2015. Abgerufen am 25. Dezember 2015.
  66. Benchmark-Vergleich Python–Dart . Archiviert vom Original am 26. Dezember 2015. Abgerufen am 25. Dezember 2015.
  67. Benchmark-Vergleich Python–Ruby . Archiviert vom Original am 26. Dezember 2015. Abgerufen am 25. Dezember 2015.
  68. @1 @2 Vorlage:Toter Link/www6.uniovi.es ( Seite nicht mehr abrufbar , Suche in Webarchiven: Python Culture )
  69. Python Patterns – An Optimization Anecdote . In: Python.org .