Kasutaja:Zeymad/Python(programmeerimiskeel )
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]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, kooselse
jaelif
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äitumistpass
, 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.5styield
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 kasutadesfrom __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 kasutabequals()
meetodi.) Pythoniis
operaatorit võib kasutada, et võrrelda objektide indentiteete (viite võrdlus). Võrdlused võivad olla ahelas, näiteksa <= 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 terminigenerator 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 kax, y = y, x
võib kasutada, et vahetada kaks muutujat. - Pythonis on "sõne vorming" operaator
%
. See funktsioon analoogneprintf
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äiendasformat()
meetodstr
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 naguregular expression
ja Windows-stiilis teed. Võrdle "@
-tsiteerimist" C#.
- 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 (
- Pythonil on index ja slice väljendid listides, märgitud kui
a[key]
,a[start:stop]
võia[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äiteksa[:]
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.
Tüüp | Kirjeldus | Süntaks näide |
---|---|---|
str
|
Sõne: muutmatu unicode jada. | 'Wikipedia' "Wikipedia" """Spanning
|
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 c
ga.[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]- ↑ http://www.python.org/download/releases/3.4.0/
- ↑ http://www.python.org//
- ↑ Allen Downey. How to Think like a Computer Scientist: Learning with Python, Wellesley, MA: Green Tea Press, 2002, ISBN 0971677506.
- ↑ Python 2.0 License. (Vaadatud 15.03.2013.)
- ↑ Python-Dev SETL (was: Lukewarm about range literals). (Vaadatud 15.03.2013.)
- ↑ Python Software Foundation. (Vaadatud 14.03.2013.)
- ↑ General Python FAQ - Python v2.7.3 documentation. (Vaadatud 15.03.2013.)
- ↑ Allen Downey. How to Think like a Computer Scientist: Learning with Python, Wellesley, MA: Green Tea Press, 2002, ISBN 0971677506.
- ↑ Python 2.0 License. (Vaadatud 15.03.2013.)
- ↑ Python-Dev SETL (was: Lukewarm about range literals). (Vaadatud 15.03.2013.)
- ↑ Python Software Foundation. (Vaadatud 14.03.2013.)
- ↑ General Python FAQ - Python v2.7.3 documentation. (Vaadatud 15.03.2013.)
- ↑ http://docs.python.org/dev/reference/lexical_analysis.html#keywords
- ↑ http://docs.python.org/reference/lexical_analysis.html#keywords
- ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaAutoNT-59
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaAutoNT-60
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaAutoNT-61
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaclassy
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegapep0237
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaAutoNT-62
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaAutoNT-63
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaAutoNT-64
on ilma tekstita. - ↑ Viitamistõrge: Vigane
<ref>
-silt. Viide nimegaAutoNT-65
on ilma tekstita.
Välisviited
[muuda | muuda lähteteksti]Pildid, videod ja helifailid Commonsis: Zeymad/Python(programmeerimiskeel ) |
- Neeme Kahusk, Sissejuhatus Pythonisse
- Kuutõrvaja wiki, Python
- 28. oktoober 2010, PHP pakub palju lõbu, aga Python on "pika suhte materjal", forte.delfi.ee
- video Pythoni interpretaatorist
- An Interview with Guido van Rossum - O'Reilly Media. (Vaadatud 14.03.2013.)
- Guido's Personal Home Page. (Vaadatud 14.03.2013.)