|
Popular Keywords: old books, old book, cook books, poetry, find books, travel books, book search, bargain books, cheap books, inexpensive books, book compare, book comparison, comics, books and collectibles book, books, new books, new book, used books, used book, rare books, rare book, second hand books, second hand book, out of print books, out of print book, textbooks, used textbooks, cheap textbooks, college textbooks
Python Komputillingvo
Komputiko > Komputillingvo > Python
Python estas interpretita, interaktiva programa lingvo kreata de Guido VAN ROSSUM kaj distribuata per libera licenco. Ĝi estas nomita laŭ la brita televidserio Monty Python's Flying Circus. Ĝi estas ofte komparita al Tcl, Perl, Scheme, aŭ Java, kaj lastatempe al Ruby.
Jen simpla ekzemplo de Python-a programo:
# Ekscii pri la primeco de nombro import sys, stringprint 'Enmetu nombron por provi:' line = sys.stdin.readline()
y = string.atoi(line) x = y / 2 while x > 1: if y % x
| Table of contents |
|
2 Kunmetaj datumtipoj 3 Objekta sistemo 4 "La Blankspaca Afero" 5 Funkcia programado 6 Traktado de esceptoj |
== 0: print y, 'ne estas prima (ĝi divideblas de ', x, ')' break x = x - 1 else: print y, 'estas prima'
=Filozofio=
Python estas multaparadigma lingvo, kiel C++ kaj malkiel Smalltalk. Ĉi tio signifas ke, anstataŭ devigi programistojn adopti unu specifan stilon de programado, ĝi permesas kelkajn. Estas subtenitaj objektema kaj strukturema programado, kaj ankaŭ funkcia programado. Ĝi estas dinamike datentipo-kontrolita kaj uzas senrubigon por prizorgi memoron kaj evitas referencan sintakson.
Kvankam popularigita kvazaŭ kontrasto de Perl, Python havas multajn similaĵojn al tiu lingvo. Tamen, la prilaborantoj de Python kontraŭstaras la flekseblegan sintakson de Perl kaj favoras pli konserveman (kaj, laŭ ili, pli legeblan) sintakson. Kvankam (same kiel Perl) Python estas foje klasigita kiel skripta lingvo, ĝi jam estis uzata por krei multajn grandajn projektojn, ekzemple: aplika servo Zope kaj sistemo de dosiera distribuo Mojo Nation.
=Datumaj tipoj kaj strukturoj=
Python havas vastan rangon de bazaj datumaj tipoj. Kune kun normalaj entjera kaj frakcia matematiko, ĝi senĝene subtenas aritmetikon de grandaj nombroj kaj kompleksaj nombroj.
Ĝi subtenas la kutiman aron de operacioj sur ĉenoj, sed havas unu escepton: ĉenoj en Python estas neŝangeblaj objektoj, do iu ĉena operacio kiu alilingve ŝanĝus string (ekzemple, anstataŭigo de literoj) en Python simple redonos novan ĉenon.
En Python valoroj, ne variaĵoj, portas datumtipon -- tio signifas ke Python estas lingvo dinamika pri tipoj, kiel Lisp kaj malkiel Java.
Inter tipodinamikaj lingvoj, Python estas mezgrade tip-kontrolita. Ĝi estas nek tiel malstrikta kiel Perl, nek tiel strikta kiel Caml. Implika konvertado estas difinita por nombraj datumtipoj, tiel ke oni povas valide multobligi kompleksan nombron per longa entjera nombro (ekzemple) sen eksplika datumtipigo. Tamen, malkiel en Perl, estas neniu implika konvertado inter, ekzemple, nombroj kaj ĉenoj; nombro estas nevalida argumento al operacio sur ĉeno.
Python ankaŭ havas kelkajn kunmetajn datumtipojn, i.a. listojn, opojn, kaj vortarojn. Listoj, opoj, kaj ĉenoj estas sinsekvaĵoj kaj havas inter si multe da la samaj metodoj: oni povas iteracii tra la literoj de ĉeno same facile kiel la eroj de listo. Listoj estas pludaŭrigeblaj tabeloj, sed opoj estas de fiksita longeco kaj neŝanĝeblaj.
La celo de ĉi tiom da neŝangebleco temas pri vortaroj, datumtipo konata aliloke kiel hakettabeloj aŭ asociaj tabeloj. Por prezervi koherecon sub referenca paso, la ŝlosiloj de vortaro devas esti de neŝangebla datumtipo. Vortaraj valoroj, aliflanke, povas esti de iu ajn datumtipo.
La datumtipa sistemo de Python estas bone integrigita kun la klasa sistemo. Kvankam la bazaj datumtipoj ne estas precize klasoj, klaso povas heredi de datumtipo. Tial eblas pludaŭrigi ĉenojn kaj vortarojn ... kaj eĉ entjerajn nombrojn, se oni volas. Python ankaŭ subtenas multoblan heredon.
La lingvo subtenas vastan introspekton de datumtipoj kaj klasoj. Datumtipoj povas esti legitaj kaj komparitaj -- ja, ĉar kiel Smalltalk, datumtipoj estas mem datumtipo. La atribuaĵoj de objekto povas esti elprenitaj kiel vortaro.
=Sintakso=
Python estis formita esti tre legebla. Ĝi havas simplan vidan aranĝon, uzas anglalingvajn vortojn ofte kie aliaj lingvoj uzas punkciumon, kaj havas rimarkinde mapli da sintaktaj konstruoj ol multaj strukturaj lingvoj, ekz. C, Perl, aŭ Pascal.
Ekzemple, Python havas nur du strukturajn iteraciajn formojn -- "for", kiu iteracias erojn de listo aŭ iteracianto (kiel "foreach" en Perl); kaj "while", kiu iteracias tiel longe kiel veras Bulean esprimon. Tial mankas al ĝi C-stila kompleksa "for," "do...while", kaj la "until" de Perl, kvankam kompreneble oni povas esprimi egalajn aferojn. Same, ĝi havas nur "if...elif...else" por branĉigo, neniun "switch" aŭ etikeditan "goto".
Unu nekutima propraĵo de la sintakso de Python estas la metodo uzata por limigi programajn blokojn. Foje nomata "la blankspaca afero", ĝi estas unu propraĵo de Python-sintakso pri kiu multaj programistoj neniam Python-programintaj jam aŭdis, ĉar ĝi estas unika inter nunaj disvastigitaj lingvoj.
En lingvoj kiuj uzas la blokan strukturon fine hereditajn de Algol, i.a. Pascal, C, kaj Perl -- blokoj da kodo estas limigitaj per vinkuloj aŭ ŝlosilvortoj. (C kaj Perl uzas { }; Pascal uzas "begin" kaj "end".) En ĉiuj ĉi lingvoj, tamen, programistoj foje krommarĝenas la kodon ene de bloko, por vide disigi ĝin de la ĉirkaŭa kodo.
Python anstataŭ prenas propraĵon de la malpli konata lingvo Occam -- anstataŭ de punkciumo aŭ ŝlosilvotoj, ĝi uzas krommarĝenon mem por indiki la daŭron de bloko. Mallonga ekzemplo klarigos ĉi tion. Jen estas C kaj Python funkcioj kiuj faras la saman aferon -- komputas la faktorialon de entjera nombro.
C:
Tamen, al Python-programistoj, "la blankspaca afero" estas simple ellaboraĵo de normalaĵo kiun programistoj per Algol-stilaj lingvoj ĉiukaze jam sekvas.
Kiel ĉi-supre menciite, alia forto de Python estas la havebleco de funkciaj sintaksaj eroj. Kiel oni povas antaŭvidi, ĉi tiuj ege faciligas labori je listoj kaj aliaj kunmetaĵoj. Unu tia konstruo estas la lista komprenumo, enkodukita de la funkcia lingvo Haskell, kiel vidata jene kalkulante la unuajn kvin eksponentumojn de du:
La "lambda" ŝlosilvorto de Python eble misdirektus iujn fanatikulojn de funkcia programado. Lamdo-blokoj en Python rajtas enhavi nur esprimojn, ne asertojn. Tial, ili ne estas la plej ĝeneralaj manieroj per kiu reliveri ĉe funkcio. Anstataŭ, la kutima afero por fari estas simple difini kaj reliveri ĉe funkcio uzante lokregiona nomo, kiel en la jena ekzemploj de simpla sekca funkcio:
Python subtenas (kaj vaste uzas) traktadon de esceptoj por provi pri eraraj kondicoj. Fakte, eĉ eblas kapti la escepton kaŭzitan de sintaksa eraro.
Esceptoj permesas pli koncizan kaj dependeblan kontroladon de eraroj ol multaj aliaj manieroj de raporti erarajn aŭ esceptajn okazojn. Esceptoj estas fadensekuraj; ili ne havas la emon malordigi kodon tiel, kiel provado por reliveritaj eraraj kodoj en C; kaj ili povas facile leviĝi tra la voka stako kiam eraro estas raportenda al pli alta nivelo de la programo.
La stilo de Python postulas uzi esceptojn kiam ajn povas aperi erara kondiĉo. Ja, anstataŭ de provi aliron al dosiero aŭ rimedon antaŭ uzi ĝin, estas kutima en Python simple provi uzi ĝin -- kaptante la escepton se aliro ne estas permesata.
=Norma biblioteko=
Python havas grandan norman bibliotekon (angle: Standard library), kiu igas ĝin taŭga por multaj taskoj. Povas esti aldonitaj al la moduloj de la norma biblioteko specialaj moduloj kreitaj en C aŭ Python. La norma biblioteko estas aparte tre taŭga por krei interretajn aplikojn, kaj subtenas grandan kvanton da normaj formatoj kaj protokoloj (ekz. MIME kaj HTTP). Moduloj por krei bildajn uzulinterfacojn, konekti al rilatumaj datumbazoj, kaj manipuli regulesprimojn estas ankaŭ parto de la norma biblioteko.
La norma biblioteko estas unu el la plej grandaj fortoj de Python. La plejparto de ĝi estas kongrua trans sistemoj, kio signifas ke eĉ tre specialigitaj Python-programoj povas funkcii ĉe Unikso, MacOS, kaj Vindozo senŝanĝe.
=Aliaj propraĵoj=
Kiel Lisp, kaj malkiel Perl, la Python-interpretilo ankaŭ subtenas interaktivan reĝimon en kiu esprimoj povas esti enmetitaj de la terminalo kaj rezultoj povas esti tuj viditaj. Ĉi tio estas bonaĵoj por lernantoj de la lingvo kaj ankaŭ por spertaj programistoj: etaj eroj de kodo povas esti provitaj en interaktiva mondo antaŭ ol oni enmetas ilin en veran programon.
= Eksteraj ligoj =
Datumtipa sistemo
Kunmetaj datumtipoj
Objekta sistemo
"La Blankspaca Afero"
int factorial(int x) {
if (x == 0) {
return(1);
} else {
return(x * factorial(x-1));
}
}Python:def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x-1)Iuj programistoj alkutimiĝintaj al Algol-stilaj lingvoj, en kiuj blankspaco estas semantike malplena, komence pensas ke ĉi tio estas konfuza. Iuj jam faris nekomplimentajn komparojn al la laŭkolona stilo uzata ĉe truokartaj Fortran-sistemoj: iam, estas grandega atingo havi "liberformaj" lingvoj en kiu nur simboloj gravis kaj ne ties pozicio sur la linio.Funkcia programado
nombroj = [1, 2, 3, 4, 5]
eksponentumoj_de_du = [ 2 ** n for n in nombroj ]
Pro tio ke Python permesas ke funkcioj estu argumentoj, ankaŭ eblas esprimi eĉ pli subtilajn funkciajn konstruojn, ekz. la pludaŭrigon.def add_and_print_maker(x):
def temp(y):
print "%d + %d = %d" % (x, y, x+y)
return tempTraktado de esceptoj













