Kasutaja:Zeymad/Python(programmeerimiskeel )

Allikas: Vikipeedia
Python
Fail:Python logo.svg
Faililaiend .py, .pyw, .pyc, .pyo, .pyd
Paradigma funktsionaalne, imperatiivne, reflektiivne, objektorienteeritud (klassipõhine)
Väljalaskeaeg 1991
Looja Guido van Rossum
Arendaja Python Software Foundation
Viimane väljalase 3.4.0 (28. september 2013)[1]
2.7.5 (28. september 2013)[2]
Tüüpimine dünaamiline, tugev, pardi
Implementatsioonid CPython, IronPython, Jython, Python for S60, PyPy, Unladen Swallow
Dialektid Stackless Python, RPython
Mõjutatud keeltest ABC, ALGOL 68, C, Haskell, Icon, Lisp, Modula-3, Perl, Java
Mõjutanud keeli Boo, Cobra, D, Dao, Falcon, Groovy, Nimrod, Ruby
OS mitmeplatvormne
Litsents Python Software Foundation License
Veebileht www.python.org

Python on üldotstarbeline interpreteeritav programmeerimiskeel, mida algselt arendati skriptimiskeeleks.

Python võimaldab mitut programmeerimisstiili, näiteks objektorienteeritud, protseduraalset või funktsionaalset programmeerimist.

Pythonit peetakse küllaltki lihtsaks keeleks ja seda on soovitatud programmeerimise õppimisel esimeseks keeleks.

Python sisaldab selliste programmeerimiskeelte nagu C++, Java, Modula-3 ja Scheme tunnuseid.[3]

Assistendile[muuda | muuda lähteteksti]

Tere,

Kasutaja "Zeymad" taga on Siim Andres. Mul juba eksisteeris kasutaja. Otsustasin tõlkimise kasuks https://en.wikipedia.org/wiki/Python_%28programming_language%29 ... aga mul on probleem viidete kopeerimisega. Kas oskate kommenteerida?

Lugupidamisega,

Siim Andres

Ajalugu[muuda | muuda lähteteksti]

Pythoni töötas 1990ndate alguses Hollandis Stichting Mathematisch Centrumis välja Guido van Rossum. Python on keele ABC[4] järglane. ABC omakorda on inspireeritud SETL-ist.[5] 2000. aasta mais lõid Guido van Rossum ja Pythoni arendustiim BeOpen PythonLabs firma, mis sama aasta oktoobris ühines firma Digital Creations tiimiga (nüüd tuntud kui Zope Corporation). 2001. aastal loodi mittetulundusühing Python Software Foundation[6], mis on Pythoni autoriõiguse omanik, sponsoriks on ka Zope Corporation.

Python on oma nime saanud briti naljameeste telesarja "Monty Pythoni lendav tsirkus" järgi.[7] Dokumentatsiooni koodinäidetes üritatakse vältida liigset tõsidust viidetega grupi loomingule.

Kõik Pythoni avalikustatud versioonid on avatud lähtekoodiga. Enamik väljalasked, kuigi mitte kõik, ühilduvad ka GPL-litsentsiga. Pythoni interpretaatorit ja teeke levitatakse tasuta tarkvarana.

Võrdlus teiste keeltega[muuda | muuda lähteteksti]

Python 2.x süntaksi näide

Pythoni kasutamine erineb teistest keeltest arendamise kiiruse poolest; samas on olemas kõik objektorienteeritud programmeerimise vahendid. Python on hea keel prototüüpimiseks: tihtipeale luuakse mingi arvutiprogrammi esialgne kavand selles keeles ning hiljem realiseeritakse see mõnes kiiremas kõrgkeeles. Vahel kirjutatakse ainult programmi aeglasemad osad C-s või C++-is.

Süntaks ja semantika[muuda | muuda lähteteksti]

Python loodi kergelt loetavaks keeleks ja ta projekteeriti selge graafilise kasutajaliidesega. Tihti kasutades inglise keelseid võtmesõnu kohtades, kus teised keeled kasutavad kirjavahemärke. Lisaks on Pythonil väiksem arvam süntaktilise erandeid ja erijuhte kui keeltes C või Pascal. [15]

Tehniline info[muuda | muuda lähteteksti]

Python on dünaamiliste andmetüüpidega keel, seega programmeerijal ei ole tarvis määratleda muutujate tüüpe. See suurendab programmeerija võimalusi, kuid on veaohtlik.

Pythoni koodi interpreteerimine ja optimeerimine võivad olla mõnikord aeglased protsessid. Selle koha pealt sarnaneb Python Javaga, kuna ka Pythoni programmid kompileeritakse enamasti baitkoodiks, kuigi see protsess on Pythoni puhul läbipaistev. Siiski on Pythoni programmid masinkoodi kompileeritud programmidest (C, C++) alati aeglasemad, isegi mitu korda. Samas tänapäeva arvutite kiiruse juures pole seda vahet lihtsamate ülesannete puhul märgata.

Python on üldotstarbeline interpreteeritav programmeerimiskeel, mida algselt arendati skriptimiskeeleks.

Python võimaldab mitut programmeerimisstiili, näiteks objektorienteeritud, protseduraalset või funktsionaalset programmeerimist.

Pythonit peetakse küllaltki lihtsaks keeleks ja seda on soovitatud programmeerimise õppimisel esimeseks keeleks.

Python sisaldab selliste programmeerimiskeelte nagu C++, Java, Modula-3 ja Scheme tunnuseid.[8]

Ajalugu[muuda | muuda lähteteksti]

Pythoni töötas 1990ndate alguses Hollandis Stichting Mathematisch Centrumis välja Guido van Rossum. Python on keele ABC[9] järglane. ABC omakorda on inspireeritud SETL-ist.[10] 2000. aasta mais lõid Guido van Rossum ja Pythoni arendustiim BeOpen PythonLabs firma, mis sama aasta oktoobris ühines firma Digital Creations tiimiga (nüüd tuntud kui Zope Corporation). 2001. aastal loodi mittetulundusühing Python Software Foundation[11], mis on Pythoni autoriõiguse omanik, sponsoriks on ka Zope Corporation.

Python on oma nime saanud briti naljameeste telesarja "Monty Pythoni lendav tsirkus" järgi.[12] Dokumentatsiooni koodinäidetes üritatakse vältida liigset tõsidust viidetega grupi loomingule.

Kõik Pythoni avalikustatud versioonid on avatud lähtekoodiga. Enamik väljalasked, kuigi mitte kõik, ühilduvad ka GPL-litsentsiga. Pythoni interpretaatorit ja teeke levitatakse tasuta tarkvarana.

Treppimine[muuda | muuda lähteteksti]

Püüton kasutab võtmesõnade ja loogeliste sulgude asemel valgetausta treppimist, et blokkidel puuduks piirang; iseärasus, mis on määratud, kui suluseisu reegel. Treppimise tihedus on tingitud kindlate lähtekoodide käskudest; langus treppimises tähistab kasutuses bloki lõppu.[16] Pythoni programmeerijad peavad seda kasulikuks, [17] teised aga kritiseerivad.[18]

Lähtekoodi käsud ja kontrollivool[muuda | muuda lähteteksti]

Pytoni käskudes sisalduvad (teiste hulgas):

  • if käsk, mis tingimuste rahuldamisel täidab koodi bloki, koos else ja elif käsuga.
  • for käsk, mis itereerib itereeritava objekti, haarates iga elementi kohalikku muutujasse, et seda kasutada ühendatud bloki poolt.
  • while käsk, mis täidab bloki koodi juhul kui tingimus on tõene.
  • try käsk, mis võimaldab erandi tõstmist kinnitatud koodiblokkis kättesaadavaks erijuhtude puhul; see samuti kindlustab koodipuhastuse järgus, et viimane koodiblokk käivitub, vaatamata sellele, kuidas koodiblokk väljub.
  • class käsk, mis käivitab koodibloki ja seondab kohalikku nimeruumi classiga, kasutuseks objektorienteeritud programmeerimises.
  • def, mis defineerib funktsiooni või meetodi.
  • with, (Python 2.5st), mis suleb koodibloki konteksti halduris(näiteks: omandama luku enne koodiblokk käivitumist ja peale seda luku lahti laskma või siis faili avada ja siis sulgeda), lubades RAII sarnast käitumist
  • pass, mis teenib kui NOP. See on süntaktiliselt vajalik, et luua tühi koodiblokk.
  • assert, mida kasutatakse programmi vigade silumisel, et kontrollida tingimusi, mis peaksid kehtima.
  • yield, mis tagastab väärtuse generaator funktsioonist. Python 2.5st yield yield on ka operaator. seda vormi kasutati, et realiseerida kaasrutiin.
  • import, mida kasutatakse, et importida mooduleid mille funktsioone või muutujaid saab kasutada programmis.

Python ei toeta tail-call optimiseerimist või esimese-klassi jätku ja Guido Van Rossum sõnul seda ei juhtugi.[19][20]. Siiski toetus kaasrutiini sarnase funktsionaalsuseks on pakutud 2.5 Pythoni generaatorite laiendamisel.[21] Eelnevalt Python 2.5le generaatorid olid laisad iteraatorid; informatsioon edastati ühesuunaliselt välja generaatoritest. Alates Python 2.5st on võimalik edastada informaatsiooni tagasi generaator funktsiooni ja alates Python 3.3st seda informatsiooni on võimalik edastada läbi mitme pinu taseme.[22]


Võtmesõnade loetelu[muuda | muuda lähteteksti]

Järgnevalt on esitatud Pythoni programmikeeles kasutatavad võtmesõnad:[13][14]

  • and
  • as
  • assert
  • break
  • class
  • continue
  • def
  • del
  • elif
  • else
  • except
  • exec (muudetud sisseehitatud funktsiooniks alates Python 3.x versioonidest)
  • False (alates Python 3.x)
  • finally
  • for
  • from
  • global
  • if
  • import
  • in
  • is
  • lambda
  • None (alates Python 3.x)
  • nonlocal (alates Python 3.x)
  • not
  • or
  • pass
  • print (muudetud sisseehitatud funktsiooniks alates Python 3.x versioonidest)
  • raise
  • return
  • True (alates Python 3.x)
  • try
  • while
  • with
  • yield

Võtmesõnu ei tohi kasutada muutujate nimedena.

Avaldised[muuda | muuda lähteteksti]

Pythoni avaldised on sarnased keeltele nagu C ja Java:

  • Python 2s / operaator täisarvudes tegeleb jagamistehetega; see kärbib tulemuse täisarvu. Ujukomaga arvu jagades täisarvudega saavutatakse teisendades ühe täisarvu ujukoma arvuks (näiteks. float(x) / y). Python 3s, / tulemus on alati ujukoma arv. Sellist käitumist saab võimaldada Python 2.2+s kasutades from __future__ import division. Nii Python 2.2+ kui ka Python 3s on võimalik // kasutada täisarvuliseks jagamiseks.
  • Pythoni == võrdleb väärtust, erinevalt Javast, kus võrdlus toimub viidete põhjal. (Väärtuse võrdlus Javas kasutab equals() meetodi.) Pythoni is operaatorit võib kasutada, et võrrelda objektide indentiteete (viite võrdlus). Võrdlused võivad olla ahelas, näiteks a <= b <= c.
  • Python kasutab sõnu and, or, not oma boolean operaatoritena, erinevalt sümbolitest &&, ||, ! mida kasutatakse Java- ja C-keeles.
  • Pythonis on tüüp väljendeid list comprehension. Python 2.4 laiendas list arusaamu ühte keskseks väljendi termini generator expression.[15]
  • Anonüümsed funktsioonid rakendatakse lambda expressions; aga, need on piiratud kuna koodi tüves võib olla ainult üks väljend.
  • Tingmuslikud väljendid Pythonis on kirjutatud x if c else y[16] (erinevalt operaatoritest koodis?: operaator, mis on tavaline programmeerimiskeeltes).
  • Python teeb vahet listidel ja N-korteežil. Listid, mis on kirjutatud kui [1, 2, 3], on muudetavad, ja ei saa kasutada võtmetena sõnastikes (sõnastiku võti peab olema muutumatu Pythonis). Korteežid on kirjutatud (1, 2, 3)ja nad on muutmatud ning seega saab neid kasutada võtmetena sõnastikes, eeldusel, et kõik elemendid korteežsis on muutmatud. Sulud korteeži ümber on mittekohustuslikud mõnes kontekstis. Korteežid võivad ilmuda ka võrdlusmärgi vasakul küljel; siit ka x, y = y, x võib kasutada, et vahetada kaks muutujat.
  • Pythonis on "sõne vorming" operaator %. See funktsioon analoogne printf vorminguga sõnedele C-keeles, näiteks "foo=%s bar=%d" % ("blah", 2) väärtuseks on "foo=blah bar=2". Python 3- ja 2.6+s, seda täiendas format() meetod str klass, näiteks "foo={0} bar={1}".format("blah", 2).
  • Pythonil on erinevad sõned:
    • Sõned piiratud ühe või kähe jutumärgiga. Erinevalt Unix shell, Perl and Perl-mõjutatud keeltes, üksikud jutumärgid ja topelt jutumärgid töötavad sarnaselt. Mõlemad sõne tüübid kasutavad kurakaldkriips (\) kui paomärk ja sellel ei ole sõne interpoleerimist nagu "$foo".
    • Kolmekordse jutumärgistusega, mis algavad ja lõppevad kolme või topelt jutumärkide seeriaga. Nad võivad ulatuda mitme reani ning funktsioneerida here dokumentide Perl ja Ruby kestades.
    • Raw string variandid, märgitud kui stringile on eesliidetud r. Ükski väljundi jada on tõlgendatud; siit ka sõned on kasulikud, kus sõnasõnaline kurakaldkriipsud on harilikud nagu regular expression ja Windows-stiilis teed. Võrdle "@-tsiteerimist" C#.
  • Pythonil on index ja slice väljendid listides, märgitud kui a[key], a[start:stop] või a[start:stop:step]. Indeksid on null-baasil ja negatiivsed indeksid on relatiivsed lõpuni. Viilud võtavad elemente start indeksist kuni ja mitte kaasaarvatud stop indeksini. Kolmanda viilu parameeter nimega step või stride lubab elemente vahele jätta või ümberpöörata. Viilindeksid võib vahele jätte, näiteks a[:] tagastab koopia tervest listist. Viilu iga element on shallow copy.

Pythonis väljendi ja avalduse vahe on rangelt jõustatud, kontrastselt keeltele nagu Common Lisp,Scheme, või Ruby.See viib mõninga funktsionaalsuse paljundamiseni. Näiteks:

  • List comprehensions vs. for-tsüklid
  • Conditional väljendid vs. if blokid
  • eval() vs. exec() sisseehitatud funktsioonid (Python 2-s, exec on avaldis); esimene väljenditeks, teine avalduste jaoks.

Avaldused ei saa olla osa väljenditest ja listid ning teised arusaamad või lambda väljendid, kõik olles väljendid, ei saa sisaldada avaldisi. Erinäide sellest on määratud avaldis nagu a = 1 ei suuda moodustada osa tinglikust väljendist ühest osast tinglikust avaldisest. Selle eelis on klassikalise C veateate vältimine, kus määramis operaator = ajatakse segamini võrdväärsus operaatoriga == tingimustes: if (c = 1) { ... } on kehtiv C kood aga if c = 1: ... põhjustab süntaktilise veateate Pythonis.

Meetodid[muuda | muuda lähteteksti]

Objekti meetodid on funktsioonid seotud objekti klassiga; süntaks instance.method(argument) on tavaliste meetodide ja funktsioonide tarbeks, süntaktiline suhkur Class.method(instance, argument) jaoks. Python meetodidel on konkreetsed self parameetrid pääsuks instance data-le, kontrastselt varjatud enesele teistes objektorienteeritud programmeerimiskeeltes (näiteks, Java, C++ või Ruby).[17]

Tüüpimine[muuda | muuda lähteteksti]

Python kasutab duck-tüübistamist ja on tüüpinud objekte aga tüübistamata jätnud muutuja nimed. Tüübi piiranguid ei kontrollita kompileerimise ajal; pigem tehted objektil võivad ebaõnnestuda, märgistades, et kasutatav objekt ei ole sobivat tüüpi. Kuigi . dünaamiliselt tüübistatud, Python on rangelt tüübistatud, keelates operatsioone, mis ei ole nii selgelt defineeritud. (näiteks, numbri lisamine sõnele) selle asemel, et neist vaikselt aru saada.

Python võimaldab programmeerijatel defineerida oma tüübid kasutades classes, mida tihti kasutatakse Objektorienteeritud programmeerimises. Uued instances klasside(eksemplarid) luuakse klassi kutsumisel ( näiteks , SpamClass() or EggsClass()), ja klassid ise on metaklassi[[metaclass] eksemplarid type (eksemplar iseenesest eksemplarina) lubades metaprogrammeerimist ja reflekteerimist.

Eelnevalt Python 3.0le, Pythonil oli kahte tüüpi klasse "vana-stiil" ja "uus-stiil". [18] Vana-stiili klassi eemaldati Python 3.0st milletõttu kõik klassid on uus-stiilis. Versioonide 2.2 ja 3.0 vahel mõlemat sorti klasse oli võimalik kasutada. Mõlema stiili süntaks on sama, vahe seisneb selles kas klassi object on päritud otse või kaudselt (kõik uue-stiili klassid pärivad object ja on type) eksemplarid.

Python 3e sissehitatud tüüpide kokkuvõte
Tüüp Kirjeldus Süntaks näide
str Sõne: muutmatu unicode jada. 'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines"""
bytearray Baitide muudetav jada. bytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
bytes Muutmatu baitide jada. b'Some ASCII'
b"Some ASCII"
bytes([119, 105, 107, 105])
list Muudetav list, võib sisaldada erinevad tüüpe. [4.0, 'string', True]
tuple Muutmatu, võib sisaldada erinevad tüüpe. (4.0, 'string', True)
set, frozenset Järjestamata set, ei sisalda duplikaate. Frozenset on muutmatu. Mõlemad võivad sisaldada erinevad tüüpe kuni nad on räsitavad. {4.0, 'string', True}
frozenset([4.0, 'string', True])
dict Muudetav associative array (või sõnastik) võtme ja väärtuse paarid.Võib sisalda erinevaid tüüpe(võtmeid ja väärtusid). Võti peab olema räsitav tüüp. {'key1': 1.0, 3: False}
int Muutmatu täisarv piiramatu suurusega.[19] 42
float Muutmatu floating point arv (süsteemi-määratud täpsus). 3.1415927
complex Muutmatu complex number reaal ja imaginaar osadeg. 3+2.7j
bool Muutmatu kahendmuutuja. True
False

Matemaatika[muuda | muuda lähteteksti]

Kontrastis mõne programmeerimis keelega täisarvu jagamine on defineeritud ümarduma negatiivse lõpmatuse poole. Seega 7 // 3 on 2, aga (−7) // 3 on −3. See on ühtne ja pidev: näiteks, see tähendab võrrand (a+b) // b == a // b + 1 on alati õige, samal ajal kui keeltes nagu C, (-6+7) / 7 == -6 / 7. See tähendab, et võrrand b * (a // b) + a % b == a on kehtiv nii positiivse kui ka negatiivse a väärtuste puhul. Siiski, selle võrrandi õigsuse ülal hoidmine tähendab kuni a % b tulemus on nagu oodatud, see võib half-open interval [0,"b"), kus b on positiivne täisarv ja peab valetama intervallis (b,0] kui b is negative.[20]

Python pakub round funktsiooni kohtkomaarvude ümardamiseks täisarvudeks. Versioonid enne 3e ümardavad nullist eemale:round(0.5) is 1.0, round(-0.5) is −1.0.[21] Python 3 kasutab ümarda tasa: round(1.5) on 2.0, round(2.5) on 2.0.[22] Decimal Tüüp/klass moodulis decimal (alates versioonist 2.4) tagab täpse arvulise kuju ja mitu ümardus moodust.

Python lubab kahendmuutuja väljendeid mitme võrdsus suhtega moel mis on kooskõlas üldkasutusega matemaatikas. Näiteks, väljend a < b < c testib kas a on vähem kui b ja kas b on vähem kui c. C-deriveeritud keeled tõlgivad seda väljendit erinevalt: C-s see väljend arvutaks välja esimesena a < b, tulemuseks 0 või 1, ja see tulemus siis võrreldaks cga.[23][lisa lehekülg]

Hello world[muuda | muuda lähteteksti]

Klassikaline Hello world programm Pythonis:

  • Python 2.x:
print "Hello, world!"
  • Python 3.x:
print ("Hello, world!")

Kommentaarid[muuda | muuda lähteteksti]

Kommentaarid ehk see tekst, mida programmi täitmisel ei loeta, eraldatakse täitmisele minevast programmiosast märgiga # (trellid) või ´´´ (3 ülakoma) või “ “ “ (3 jutumärki).

  • üherealine kommentaar:
# See tekst on Pythoni programmi kommentaar
  • mitmerealine kommentaar:
’’’
print ("See tekst on kommentaari sees.")
print ("See rida on samuti kommentaari sees.")
’’’
print ("See tekst on kommentaarist väljas.")

Viited[muuda | muuda lähteteksti]

  1. http://www.python.org/download/releases/3.4.0/
  2. http://www.python.org//
  3. Allen Downey. How to Think like a Computer Scientist: Learning with Python, Wellesley, MA: Green Tea Press, 2002, ISBN 0971677506.
  4. Python 2.0 License. (Vaadatud 15.03.2013.)
  5. Python-Dev SETL (was: Lukewarm about range literals). (Vaadatud 15.03.2013.)
  6. Python Software Foundation. (Vaadatud 14.03.2013.)
  7. General Python FAQ - Python v2.7.3 documentation. (Vaadatud 15.03.2013.)
  8. Allen Downey. How to Think like a Computer Scientist: Learning with Python, Wellesley, MA: Green Tea Press, 2002, ISBN 0971677506.
  9. Python 2.0 License. (Vaadatud 15.03.2013.)
  10. Python-Dev SETL (was: Lukewarm about range literals). (Vaadatud 15.03.2013.)
  11. Python Software Foundation. (Vaadatud 14.03.2013.)
  12. General Python FAQ - Python v2.7.3 documentation. (Vaadatud 15.03.2013.)
  13. http://docs.python.org/dev/reference/lexical_analysis.html#keywords
  14. http://docs.python.org/reference/lexical_analysis.html#keywords
  15. Viitamistõrge: Vigane <ref>-silt. Viide nimega AutoNT-59 on ilma tekstita.
  16. Viitamistõrge: Vigane <ref>-silt. Viide nimega AutoNT-60 on ilma tekstita.
  17. Viitamistõrge: Vigane <ref>-silt. Viide nimega AutoNT-61 on ilma tekstita.
  18. Viitamistõrge: Vigane <ref>-silt. Viide nimega classy on ilma tekstita.
  19. Viitamistõrge: Vigane <ref>-silt. Viide nimega pep0237 on ilma tekstita.
  20. Viitamistõrge: Vigane <ref>-silt. Viide nimega AutoNT-62 on ilma tekstita.
  21. Viitamistõrge: Vigane <ref>-silt. Viide nimega AutoNT-63 on ilma tekstita.
  22. Viitamistõrge: Vigane <ref>-silt. Viide nimega AutoNT-64 on ilma tekstita.
  23. Viitamistõrge: Vigane <ref>-silt. Viide nimega AutoNT-65 on ilma tekstita.

Välisviited[muuda | muuda lähteteksti]