Grunderna i Python-programmering. Seriösa bibliotek av vetenskapliga data. Programskrivningsprocessen

Introduktion


På grund av den för närvarande observerade snabba utvecklingen av persondatorteknik sker en gradvis förändring av kraven på programmeringsspråk. Tolkade språk börjar spela en allt viktigare roll, eftersom den växande kraften hos persondatorer börjar ge tillräcklig hastighet för exekvering av tolkade program. Och den enda betydande fördelen med kompilerade programmeringsspråk är höghastighetskoden de producerar. När programexekveringshastigheten inte är ett kritiskt värde, högst det rätta valet det kommer att finnas ett tolkat språk som ett enklare och mer flexibelt programmeringsverktyg.

I detta avseende är det av visst intresse att överväga det relativt nya programmeringsspråket Python (Python), som skapades av dess författare Guido van Rossum i början av 90-talet.

Allmän information om Python. Fördelar och nackdelar


Python är ett tolkat, inbyggt objektorienterat programmeringsspråk. Det är extremt enkelt och innehåller ett litet antal nyckelord, men är också väldigt flexibelt och uttrycksfullt. Detta är ett språk på högre nivå än Pascal, C++ och, naturligtvis, C, vilket huvudsakligen uppnås genom inbyggda datastrukturer på hög nivå (listor, ordböcker, tupler).

Språkets fördelar.
En otvivelaktig fördel är att Python-tolken är implementerad på nästan alla plattformar och operativsystem. Det första språket var C, men dess datatyper är det olika bilar kunde ta upp olika mängder minne och detta fungerade som ett hinder för att skriva ett riktigt bärbart program. Python har inte en sådan nackdel.

Nästa viktiga särdrag är språkets töjbarhet tillmäts detta och, som författaren själv skriver, var språket tänkt just som töjbart. Det betyder att det är möjligt för alla intresserade programmerare att förbättra språket. Tolken är skriven i C och källkoden är tillgänglig för all manipulation. Om det behövs kan du infoga det i ditt program och använda det som ett inbyggt skal. Eller genom att skriva dina egna tillägg till Python i C och kompilera programmet kan du få en "utökad" tolk med nya möjligheter.

Nästa fördel är närvaron stort antal moduler kopplade till programmet som tillhandahåller olika ytterligare egenskaper. Sådana moduler är skrivna i själva C och Python och kan utvecklas av alla tillräckligt kvalificerade programmerare. Exempel inkluderar följande moduler:

  • Numerisk Python - avancerade matematiska funktioner som manipulering av heltalsvektorer och matriser;
  • Tkinter - bygger applikationer med ett grafiskt användargränssnitt (GUI) baserat på Tk-gränssnittet som används i stor utsträckning på X-Windows;
  • OpenGL - användning av ett omfattande bibliotek med grafisk modellering av två- och tredimensionella objekt Open Graphics Library från Silicon Graphics Inc. Denna standard stöds bland annat i sådana vanliga operativsystem som Microsoft Windows 95 OSR 2, 98 och Windows NT 4.0.
Nackdelar med språk.
Den enda nackdelen som författaren noterat är den relativt låga körhastigheten för Python-programmet, vilket beror på dess tolkningsbarhet. Men enligt vår mening kompenseras detta mer än väl av språkets fördelar när man skriver program som inte är särskilt kritiska för exekveringshastigheten.

Funktioner Översikt


1. Python, till skillnad från många språk (Pascal, C++, Java, etc.), kräver inga variabla deklarationer. De skapas på den plats där de initieras, dvs. första gången en variabel tilldelas ett värde. Detta innebär att typen av en variabel bestäms av typen av det tilldelade värdet. I detta avseende påminner Python om Basic.
Typen av en variabel är inte oföränderlig. Varje tilldelning till den är korrekt och detta leder bara till att typen av variabeln blir typen av det nya tilldelade värdet.

2. På språk som Pascal, C, C++ gav det vissa svårigheter att organisera listor. För att implementera dem var det nödvändigt att noggrant studera principerna för att arbeta med pekare och dynamiskt minne. Och även med goda kvalifikationer kan programmeraren, varje gång omimplementera mekanismerna för att skapa, arbeta och förstöra listor, lätt göra subtila fel. Med tanke på detta har några verktyg skapats för att arbeta med listor. Till exempel har Delphi Pascal en klass TList som implementerar listor; STL-biblioteket (Standard Template Library) har utvecklats för C++ och innehåller strukturer som vektorer, listor, uppsättningar, ordböcker, stackar och köer. Sådana faciliteter är dock inte tillgängliga på alla språk och deras implementeringar.

En av de utmärkande dragen hos Python är närvaron av sådana strukturer inbyggda i själva språket som tupler(tuppel) listor(lista) och ordböcker(ordbok), som ibland kallas kort(Karta). Låt oss ta en närmare titt på dem.

  1. Tuple . Den påminner lite om en array: den består av element och har en strikt definierad längd. Element kan vara vilka värden som helst - enkla konstanter eller objekt. Till skillnad från en array är elementen i en tupel inte nödvändigtvis homogena. Och det som skiljer en tuppel från en lista är att en tupel inte kan ändras, d.v.s. vi kan inte tilldela något nytt till det i-te tupelelementet och kan inte lägga till nya element. Således kan en tupel kallas en konstant lista. Syntaktiskt specificeras en tupel genom att lista alla element separerade med kommatecken, alla omgivna inom parentes:

  2. (1, 2, 5, 8)
    (3.14, 'sträng', -4)
    Alla element indexeras från början. För att få det i-te elementet måste du ange tuppelnamnet följt av indexet i inom hakparenteser. Exempel:
    t = (0, 1, 2, 3, 4)
    skriv ut t, t[-1], t[-3]
    Resultat: 0 4 2
    Således skulle en tupel kunna kallas en konstant vektor om dess element alltid var homogena.
  3. Lista . Ett bra, specifikt exempel på en lista är språksträngen Turbo Pascal. Elementen i en rad är enstaka tecken, dess längd är inte fast, det är möjligt att ta bort element eller tvärtom infoga dem var som helst på raden. Elementen i listan kan vara godtyckliga objekt, inte nödvändigtvis av samma typ. För att skapa en lista, lista bara dess element separerade med kommatecken och omge dem alla inom hakparenteser:


  4. ['sträng', (0,1,8), ]
    Till skillnad från en tuppel kan listor ändras efter önskemål. Tillgång till element utförs på samma sätt som i tupler. Exempel:
    l = ]
    skriv ut l, l, l[-2], l[-1]
    Resultat: 1 s (2,8) 0
  5. Lexikon . Det påminner om posttypen i Pascal eller strukturtypen i C. Men istället för "record field" - "value"-schemat används "nyckel" - "värde" här. En ordbok är en samling nyckel-värdepar. Här är "nyckeln" en konstant av vilken typ som helst (men strängar används huvudsakligen), den tjänar till att namnge (indexera) något motsvarande värde (som kan ändras).

  6. En ordbok skapas genom att lista dess element (nyckel-värdepar separerade med ett kolon), separerade med kommatecken och omsluta dem alla med hängslen. För att få tillgång till ett visst värde, efter ordboksnamnet, skriv motsvarande nyckel inom hakparenteser. Exempel:
    d = ("a": 1, "b": 3, 5: 3,14, "namn": "John")
    d["b"] = d
    skriv ut d["a"], d["b"], d, d["namn"]
    Resultat: 1 3,14 3,14 John
    För att lägga till ett nytt nyckel-värdepar, tilldela bara elementet med den nya nyckeln motsvarande värde:
    d["new"] = "nytt värde"
    tryck d
    Resultat: ("a":1, "b":3, 5:3.14, "name":"John", "new":"nytt värde")

3. Python, till skillnad från Pascal, C, C++, stöder inte arbete med pekare, dynamiskt minne och adressaritmetik. På så sätt liknar det Java. Som du vet är pekare en källa till subtila fel, och att arbeta med dem är mer relaterat till lågnivåprogrammering. För att ge större tillförlitlighet och enkelhet ingick de inte i Python.

4. En av Python-funktionerär hur en variabel tilldelas en annan, dvs. på vardera sidan av operatören" = "det finns variabler.

Efter Timothy Budd (), kommer vi att ringa pekare semantik det fall då uppdraget endast leder till tilldelning av referens (pekare), d.v.s. den nya variabeln blir bara ett annat namn, vilket anger samma minnesplats som den gamla variabeln. I det här fallet kommer en förändring av värdet som anges av den nya variabeln att leda till en förändring av värdet på den gamla, eftersom de betyder faktiskt samma sak.

När en tilldelning leder till skapandet av ett nytt objekt (här ett objekt - i betydelsen en bit minne för att lagra ett värde av någon typ) och kopiering av innehållet i den tilldelade variabeln till det, kallar vi detta fall kopiera semantik. Således, om kopieringsemantik gäller vid kopiering, kommer variablerna på vardera sidan av "="-tecknet att betyda två oberoende objekt med samma innehåll. Och här kommer en efterföljande förändring av en variabel inte att påverka den andra på något sätt.

Tilldelning i Python fungerar så här: if hänförlig objektet är en instans av sådana typer som siffror eller strängar, då gäller kopieringsemantik, men om det på höger sida finns en instans av en klass, lista, ordbok eller tupel, så gäller pekarsemantik. Exempel:
a = 2; b = a; b = 3
skriv ut "kopiera semantik: a=", a, "b=", b
a = ; b = a; b = 3
skriv ut "pekaresemantik: a=", a, "b=", b
Resultat:
kopia semantik: a= 2 b= 3
pekare semantik: a= b=

För er som vill veta vad som händer här, jag ger er en annan inställning till uppdrag i Python. Om vi ​​i språk som Basic, Pascal, C/C++ hanterade "kapacitet"-variabler och konstanter lagrade i dem (numeriska, symboliska, strängar - det spelar ingen roll), och tilldelningsoperationen innebar att "mata in" konstanten i den tilldelade variabeln , då måste vi i Python redan arbeta med "name"-variabler och de objekt de namnger. (Lägg märke till några analogier med Prolog-språket?) Vad är ett objekt i Python? Detta är allt som kan ges ett namn: siffror, strängar, listor, ordböcker, klassinstanser (som i Object Pascal kallas för objekt), själva klasserna (!), funktioner, moduler osv. Så när man tilldelar en variabel till ett objekt, blir variabeln dess "namn", och objektet kan ha så många sådana "namn" som önskas och de är alla oberoende av varandra.

Nu är objekt indelade i modifierbara (föränderliga) och oföränderliga. Föränderliga - de som kan ändra sitt "interna innehåll", till exempel listor, ordböcker, klassinstanser. Och oföränderliga sådana - som siffror, tupler, strängar (ja, strängar också; du kan tilldela en ny sträng som erhållits från den gamla till en variabel, men gammal linjeändring kommer inte att fungera).

Så om vi skriver a = ; b = a; b = 3, Python tolkar det så här:

  • ge objektet en "lista" " Namn a ;
  • ge detta objekt ett annat namn - b ;
  • ändra null-elementet för ett objekt.

  • Detta är hur vi får "pseudo" semantik av pekare.

    En sista sak att säga om detta: även om det inte är möjligt att ändra strukturen på tupeln, är de föränderliga komponenterna den innehåller fortfarande tillgängliga för modifiering:

    T = (1, 2, , "sträng") t = 6 # detta är inte möjligt del t # också ett fel t = 0 # tillåtet, nu är den tredje komponenten en lista t = "S" # fel: strängar är inte föränderlig

    5. Sättet som Python grupperar operatörer på är väldigt originellt. I Pascal görs detta med hjälp av operatörsparenteser början-slut, i C, C++, Java - lockiga klammerparenteser (), i Basic, används slutändelser av språkkonstruktioner (NEXT, WEND, END IF, END SUB).
    I Python språk allt är mycket enklare: att välja ett block med operatorer görs genom att flytta den valda gruppen med ett eller flera mellanslag eller tabbtecken åt höger i förhållande till titeln på strukturen som detta block kommer att tillhöra. Till exempel:

    om x > 0: skriv ut ' x > 0 ' x = x - 8 annars: skriv ut ' x<= 0 ’ x = 0 Således, en bra stil för skrivprogram, som lärare i språken Pascal, C++, Java, etc. kräver, förvärvas här från första början, eftersom det helt enkelt inte fungerar på något annat sätt.

    Beskrivning av språket. Kontrollstrukturer



    Undantagshantering


    Prova:
    <оператор1>
    [bortsett från[<исключение> [, <переменная>] ]:
    <оператор2>]
    [annan <оператор3>]
    Genomförde<оператор1>, om ett undantag inträffar<исключение>, då är det uppfyllt<оператор2>. Om<исключение>har ett värde, tilldelas det<переменной>.
    Efter framgångsrikt slutförande<оператора1>, genomförde<оператор3>.
    Prova:
    <оператор1>
    till sist:
    <оператор2>
    Genomförde<оператор1>. Om inga undantag förekommer, kör sedan<оператор2>. Annars avrättad<оператор2>och ett undantag tas omedelbart upp.
    höja <исключение> [<значение>] Kastar ett undantag<исключение>med parameter<значение>.

    Undantag är bara strängar. Exempel:

    My_ex = 'dåligt index' försök: om dåligt: ​​höj mitt_ex, dåligt utom mitt_ex, värde: skriv ut 'Error', value

    Deklarera funktioner



    Klassdeklaration



    Klass cMyClass: def __init__(self, val): self.value = val # def printVal(self): print ' value = ', self.value # # end cMyClass obj = cMyClass (3.14) obj.printVal() obj.value = " sträng nu" obj.printVal () !} Resultat:
    värde = 3,14
    värde = sträng nu

    Operatorer för alla typer av sekvenser (listor, tupler, strängar)


    Operatörer för listor (lista)


    s[i] = x Det i:te elementet s ersätts med x.
    s = t en del av elementen s från i till j-1 ersätts med t (t kan också vara en lista).
    dels tar bort s-delen (samma som s = ).
    s.append(x) lägger till element x i slutet av s.
    s.count(x) returnerar antalet element s lika med x.
    s.index(x) returnerar det minsta i:et så att s[i]==x.
    s.insert(i,j) delen av s, med början från det i:te elementet, förskjuts åt höger och s[i] tilldelas x.
    s.remove(x) samma som del s[ s.index(x) ] - tar bort det första elementet i s lika med x.
    s.reverse() skriver en sträng i omvänd ordning
    s.sort() sorterar listan i stigande ordning.

    Operatörer för ordböcker


    Arkivera objekt


    Skapad av en inbyggd funktion öppen()(se dess beskrivning nedan). Till exempel: f = open('mydan.dat','r').
    Metoder:

    Andra språkelement och inbyggda funktioner


    = uppdrag.
    skriva ut [ < c1 > [, < c2 >]* [, ] ] visar värden< c1 >, < c2 >till standardutgång. Placerar ett mellanslag mellan argument. Om det inte finns något kommatecken i slutet av listan med argument, flyttas den till en ny rad.
    abs(x) returnerar det absoluta värdet av x.
    tillämpa( f , <аргументы>) anropar funktion (eller metod) f med< аргументами >.
    chr(i) returnerar en en-teckensträng med ASCII-kod i.
    cmp(x,y) returnerar negativt, noll eller positivt om x respektive<, ==, или >än y.
    divmod (a, b) returnerar tupel (a/b, a%b), där a/b är en div b (heltalsdelen av divisionsresultatet), a%b är en mod b (återstoden av divisionen).
    eval(er)
    returnerar objektet som anges i s som en sträng. S kan innehålla vilken språkstruktur som helst. S kan också vara ett kodobjekt, till exempel: x = 1 ; incr_x = eval("x+1") .
    flyta(x) returnerar ett reellt värde lika med talet x.
    hex(x) returnerar en sträng som innehåller den hexadecimala representationen av x.
    inmatning(<строка>) visas<строку>, läser och returnerar ett värde från standardinmatning.
    int(x) returnerar heltalsvärdet för x.
    lins) returnerar längden (antal element) av ett objekt.
    lång (x) returnerar ett långt heltalsvärde x.
    max(ar), min(er) returnera det största och minsta elementet i sekvensen s (det vill säga s är en sträng, lista eller tupel).
    okt(x) returnerar en sträng som innehåller en representation av talet x.
    öppen(<имя файла>, <режим>='r' ) returnerar ett filobjekt som är öppet för läsning.<режим>= 'w' - öppning för skrivning.
    ord(c) returnerar ASCII-koden för ett tecken (sträng med längd 1) c.
    pow(x, y) returnerar värdet av x till potensen av y.
    räckvidd(<начало>, <конец>, <шаг>) returnerar en lista med heltal större än eller lika med<начало>och mindre än<конец>, genererad med en given<шагом>.
    rå_ingång( [ <текст> ] ) visas<текст>till standardutgång och läser en sträng från standardinmatning.
    rund (x, n=0) returnerar verkligt x avrundat till n:e decimalen.
    str(<объект>) returnerar en strängrepresentation<объекта>.
    typ(<объект>) returnerar typen av objekt.
    Till exempel: om typ(x) == typ(‘’): skriv ut ‘det här är en sträng’
    xrange(<начало>, <конец>, <шаг>) liknar intervall, men simulerar bara en lista utan att skapa en. Används i en for-loop.

    Specialfunktioner för att arbeta med listor


    filter (<функция>, <список>) returnerar en lista över dessa element<спиcка>, för vilka<функция>tar värdet "true".
    Karta(<функция>, <список>) gäller<функцию>till varje element<списка>och returnerar en lista med resultat.
    minska ( f , <список>,
    [, <начальное значение> ] )
    returnerar värdet som erhålls av "reduktion"<списка>funktion f. Det betyder att det finns någon intern variabel p som initieras<начальным значением>, sedan för varje element<списка>, funktionen f anropas med två parametrar: p och elementet<списка>. Resultatet som returneras av f tilldelas p. Efter att ha gått igenom allt<списка>minska avkastningen sid.
    Med den här funktionen kan du till exempel beräkna summan av elementen i en lista: def func (röd, el): returnera röd+el summa = reducera (func, , 0) # nu summa == 15
    lambda [<список параметров>] : <выражение> En "anonym" funktion som inte har ett namn och skrivs där den kallas. Accepterar parametrarna som anges i<списке параметров>, och returnerar värdet<выражения>. Används för att filtrera, reducera, kartlägga. Till exempel: >>>skriv ut filter (lambda x: x>3, ) >>>skriv ut karta (lambda x: x*2, ) >>>p=reducera (lambda r, x: r*x, , 1) >>> skriv ut sid 24

    Importera moduler



    Standard matematikmodul


    Variabler: pi, e.
    Funktioner(liknar C-språkfunktioner):

    acos(x) cosh(x) ldexp(x,y) sqrt(x)
    asin(x) exp(x) log(x) brun(x)
    atan(x) fabs (x) sinh(x) frexp(x)
    atan2(x,y) våning (x) pow(x,y) modf(x)
    tak (x) fmod(x,y) sin(x)
    cos(x) log10(x) tanh(x)

    strängmodul


    Funktioner:

    Slutsats


    På grund av Python-språkets enkelhet och flexibilitet kan det rekommenderas till användare (matematiker, fysiker, ekonomer, etc.) som inte är programmerare, utan använder datateknik och programmering i mitt arbete.
    Program i Python utvecklas i genomsnitt en och en halv till två (och ibland två till tre) gånger snabbare än i kompilerade språk (C, C++, Pascal). Därför kan språket vara av stort intresse för professionella programmerare som utvecklar applikationer som inte är kritiska för exekveringshastigheten, samt program som använder komplexa datastrukturer. I synnerhet har Python visat sig väl i att utveckla program för att arbeta med grafer och generera träd.

    Litteratur


    1. Budd T. Objektorienterad programmering. - St. Petersburg: Peter, 1997.
    2. Guido van Rossum. Python handledning. (www.python.org)
    3. Chris Hoffman. En snabbreferens för Python. (www.python.org)
    4. Guido van Rossum. Python Library Reference. (www.python.org)
    5. Guido van Rossum. Python referensmanual. (www.python.org)
    6. Guido van Rossum. Python-programmeringsverkstad. (http://sultan.da.ru)

    Låt oss gå vidare till den teoretiska och praktiska delen och börja med vad en tolk är.

    Tolk

    Tolkär ett program som kör andra program. När du skriver ett program i Python läser tolken ditt program och utför instruktionerna i det. I verkligheten är tolken ett lager av programlogik mellan din programkod och din dators hårdvara.

    Beroende på vilken version av Python du använder kan själva tolken implementeras som ett C-program, som en uppsättning Java-klasser eller i någon annan form, men mer om det senare.

    Kör ett skript i konsolen

    Låt oss köra tolken i konsolen:

    Nu väntar den på kommandoinmatning, skriv in följande instruktion där:

    Skriva ut" Hej världen!"

    yay, vårt första program! :D

    Köra ett skript från en fil

    Skapa en fil "test.py", med innehållet:

    # print "hej värld" print "hej värld" # print 2 till kraften av 10 print 2 ** 10

    och kör den här filen:

    # python /sökväg/till/test.py

    Dynamisk kompilering och bytekod

    När du har kört skriptet kompileras det först original text skript till bytecode för den virtuella maskinen. Kompileringär helt enkelt ett översättningssteg, och bytecode är en lågnivå, plattformsoberoende representation av programmets källtext. Python översätter varje instruktion i skriptets källkod till grupper av bytekodinstruktioner för att förbättra programexekveringshastigheten eftersom bytecode exekveras mycket snabbare. Efter kompilering till bytecode skapas en fil med filtillägget ".pyc" bredvid den ursprungliga manustexten.

    Nästa gång du kör ditt program kommer tolken att kringgå kompileringsstadiet och producera en kompilerad fil med filtillägget ".pyc" för exekvering. Men om du ändrar källkoden för ditt program kommer kompileringen till bytekodsteget att ske igen, eftersom Python automatiskt håller reda på ändringsdatumet för källkodsfilen.

    Om Python inte kan skriva en bytekodfil, till exempel på grund av bristande skrivbehörighet till disk, så kommer programmet inte att påverkas, bytekoden kommer helt enkelt att samlas in i minnet och tas bort därifrån när programmet avslutas.

    Python Virtual Machine (PVM)

    Efter att kompileringsprocessen har gått igenom skickas bytekoden till en mekanism som kallas virtuell maskin, som kommer att utföra instruktionerna från bytekoden. Virtuell maskinär en runtime-mekanism, den finns alltid i Python-systemet och det är en extrem komponent i systemet som kallas "Python Interpreter".

    För att konsolidera det vi har lärt oss, låt oss förtydliga situationen igen: kompilering till bytekod görs automatiskt, och PVM är bara en del av Python-systemet som du installerade tillsammans med tolken och kompilatorn. Allt händer transparent för programmeraren, och du behöver inte utföra dessa operationer manuellt.

    Prestanda

    Programmerare med erfarenhet av språk som C och C++ kan märka vissa skillnader i Pythons exekveringsmodell. Den första är att det inte finns något byggsteg eller att anropa "make"-verktyget kan köras direkt efter att källkoden skrivits. Den andra skillnaden är att bytekod inte är binär maskinkod (till exempel instruktioner för en Intel-mikroprocessor), det är en intern representation av ett Python-program.

    Av dessa skäl kan inte program i Python köras lika snabbt som i C/C++. Instruktionsövergång utförs virtuellt system, inte mikroprocessorn, och för att exekvera bytekoden krävs ytterligare tolkning vars instruktioner tar längre tid än mikroprocessorns maskininstruktioner.

    Men å andra sidan, till skillnad från traditionella tolkar, till exempel i PHP, finns det ytterligare ett kompileringssteg - tolken behöver inte analysera programmets källtext varje gång.

    Som ett resultat faller Pythons prestanda mellan traditionella kompileringsspråk och traditionella tolkande programmeringsspråk.

    Alternativa Python-implementationer

    Vad som sades ovan om kompilatorn och virtuell maskin, är typiskt för den vanliga Python-implementeringen, den så kallade CPython (implementering i ANSI C). Det finns dock även alternativa implementeringar som Jython och IronPython, som kommer att diskuteras nu.

    Detta är standard- och originalimplementeringen av Python, så kallad för att den är skriven i ANSI C. Det här är vad vi installerade när vi valde paketet ActivePython eller installeras från FreeBSD hamnar. Eftersom detta är en referensimplementering är det i allmänhet fungerar snabbare, mer konsekvent och bättreän alternativa implementeringar.

    Jython

    Originalnamn JPython, huvudsakligt syfte - tät integration med språket Java programmering . Jython-implementationen består av Java-klasser som kompilerar Python-kod till Java-bytekod och sedan överför den resulterande bytekoden virtuell Java maskin(JVM).

    Målet med Jython är att tillåta Python-program att styra Java-applikationer, precis som CPython kan styra C/C++-komponenter. Denna implementering har sömlös integration med Java. Eftersom den programkod i Python översätts till Java-bytecode, och under körning beter sig det exakt som ett riktigt program i Python. Java-språk. Jython-program kan fungera som applets och servlets, skapa ett grafiskt gränssnitt med hjälp av Java-mekanismer, etc. Dessutom ger Jython stöd för möjligheten att importera och använda Java-klasser i Python-kod.

    Men eftersom Jython-implementeringen är långsammare och mindre robust än CPython, är den av intresse för Java-utvecklare som behöver ett skriptspråk som gränssnitt till Java-kod.

    Implementeringen är avsedd att tillhandahålla integration av Python-program med applikationer byggda för att köras i Microsoft. NET Framework operativ system Windows, såväl som Mono, motsvarigheten till öppen källkod för Linux. .NET-ramverket och C#-körtiden är utformade för att ge interoperabilitet mellan mjukvaruobjekt- oavsett vilket programmeringsspråk som används, i andan av Microsofts tidigare COM-modell.

    IronPython låter Python-program fungera som både klient- och serverkomponenter tillgängliga från andra .NET-programmeringsspråk. Eftersom den utveckling pågår av Microsoft , skulle man förvänta sig betydande prestandaoptimeringar från bland annat IronPython.

    Verktyg för optimering av körhastighet

    Det finns andra implementeringar, inklusive en dynamisk kompilator Psykopat och Shedskin C++-översättaren, som försöker optimera den underliggande exekveringsmodellen.

    Psyco Dynamic Compiler

    Psykosystemär en komponent som utökar bytekodexekveringsmodellen, vilket gör att program kan köras snabbare. Psykopatär en förlängning PVM, som samlar in och använder typinformation för att översätta delar av ett programs bytekod till äkta binär maskinkod, som körs mycket snabbare. Denna översättning kräver inga ändringar av källkoden eller ytterligare kompilering under utveckling.

    Under programexekveringen samlar Psyco in information om objekttyper, och denna information används sedan för att generera högeffektiva maskinkod, optimerad för objekt av denna typ. Den producerade maskinkoden ersätter sedan motsvarande bytekodsektioner och ökar därigenom exekveringshastigheten.

    Helst är vissa delar av programkoden under kontroll av Psyco kan köras lika snabbt som kompilerad C-kod.

    Psyco ger hastighetsökningar från 2 till 100 gånger, men vanligtvis 4 gånger, när du använder en omodifierad Python-tolk. Den enda nackdelen med Psyco är att den för närvarande bara kan generera maskinkod för arkitekturen Intel x86.

    Psyco kommer inte som standard; det måste laddas ner och installeras separat. Det finns också ett projekt PyPy, som representerar ett försök att skriva om PVM för att optimera koden som i Psykopat, projekt PyPy kommer att ta till sig mer av projektet Psykopat.

    Shedskin C++ översättare

    Shedskinär ett system som konverterar Python-källkod till C++-källkod, som sedan kan kompileras till maskinkod. Dessutom implementerar systemet ett plattformsoberoende tillvägagångssätt för att exekvera Python-kod.

    Frysta binära filer

    Ibland behöver du skapa oberoende program från dina Python-program körbara filer. Detta är snarare nödvändigt för paketering och distribution av program.

    Fast binära filer kombinera programbytekod, PVM och supportfiler till en enda paketfil, nödvändiga program. Resultatet är en enda körbar fil, till exempel en fil med filtillägget ".exe" för Windows.

    Idag finns det tre huvudverktyg för att skapa "frysta binärer":

    • py2exe- det kan skapa fristående program för Windows som använder biblioteken Tkinter, PMW, wxPython och PyGTK för att skapa GUI, program som använder programvara skapa PyGame-spel, klientprogram win32com och många andra;
    • PyInstaller- liknar py2exe, men körs även på Linux och UNIX och kan producera självinstallerande körbara filer;
    • frysa- original version.

    Du måste ladda ner dessa verktyg separat från Python, de är gratis.

    Fasta binärer är ganska stora eftersom de innehåller PVM, men de är fortfarande inte ovanligt stora med moderna standarder. Eftersom Python-tolken är inbyggd direkt i de fasta binärfilerna, är installationen inte ett krav för att köra program på den mottagande sidan.

    Sammanfattning

    Det var allt för idag, i nästa artikel ska jag berätta om standardtyper data i Python, och i efterföljande artiklar kommer vi att överväga varje typ separat, samt funktioner och operatorer för att arbeta med dessa typer.

    Sedan jag började undervisa i Python 2011 har jag hittat flera resurser som jag använder regelbundet. När jag först började lära mig språket blev jag förvånad över hur välkomnande Python-gemenskapen var. Ett bevis på detta är den enorma mängden gratis, högkvalitativt material som finns tillgängligt. Nedan kommer jag att ge exempel på de resurser som helt enkelt inte skulle existera utan stöd från samhället.

    1. Uppfinn dina egna datorspel med Python

    Du kanske redan har din favoritbok i Python, men jag uppmuntrar dig att läsa den här. Du kan köpa den, läsa den online eller ladda ner den gratis som PDF. Jag gillar samma struktur i kapitlen: först ställs problemet, och sedan finns det exempel på lösningar på problemen med detaljerade förklaringar. Samma författare skrev ytterligare 3 underbara böcker.

    2. Skulpt

    Jag har arbetat i skolor där Python av en eller annan anledning (vanligtvis säkerhetsskäl) inte var tillgänglig. Skulpt kör Python-skript i webbläsaren och innehåller flera exempel. Den första använder Turtle-modulen för att skriva ut geometriska former. Jag använder det ofta för att testa elevernas kunskaper.

    3. Gissa antalet

    8. Slumpmässigt

    Python har flera användbara inbyggda funktioner, såsom utskrift och inmatning. Den slumpmässiga modulen, å andra sidan, måste importeras före användning. Det låter eleverna lägga till lite oförutsägbarhet till sina projekt.

    Importera slumpmässigt mynt = ['heads','tails'] flip = random.choice(coin) print(flip)

    9. Antigravitation

    Jag använder sällan antigravitationsmodulen. Men när jag ska göra detta frågar jag eleverna vad som kommer att hända när de importerar det. Vanligtvis får jag många olika svar, ibland antyder de till och med att den verkliga effekten av tyngdlöshet börjar – de tycker att Python är så kraftfullt :) Du kan prova själv och erbjuda det till dina elever.

    Importera antigravitation

    10. Sabotage

    Den största svårigheten för mig som lärare var att hitta syntaxfel på studentprogrammen. Som tur var, innan jag helt brände ut av utmattning, kom jag på

    Pytonorm- ett kraftfullt och lättläst programmeringsspråk. Det ger bekväma datastrukturer på hög nivå och ett enkelt men effektivt tillvägagångssätt för objektorienterad programmering. Pytonorm tolkat språk. För att köra de skrivna programmen måste du ha en CPython-tolk. Python-tolken och det stora standardbiblioteket är fritt tillgängliga som källfiler och binära filer för alla större plattformar på den officiella webbplatsen Pytonorm http://www.python.org och kan omdistribueras utan begränsningar. Dessutom innehåller webbplatsen distributioner och länkar till många tredjepartsmoduler och detaljerad dokumentation.
    Språket har en tydlig och konsekvent syntax, genomtänkt modularitet och skalbarhet, tack vare vilken källkoden skriven i Pytonorm program är lätta att läsa. Språkutvecklare Pytonorm följa en viss programmeringsfilosofi som kallas "The Zen of Python". Dess text matas ut av tolken med hjälp av importera detta kommando:

    >>> importera denna The Zen of Python, av Tim Peters Vackert är bättre än fult. Explicit är bättre än implicit. Enkelt är bättre än komplext. Komplext är bättre än komplicerat. Platt är bättre än kapslad. Gles är bättre än tät. Läsbarheten räknas. Särskilda fall är inte tillräckligt speciella för att bryta mot reglerna. Även om det inte är så att det går över i tysthet. -uppenbart sätt att göra det på, även om det kanske inte är självklart i början om du inte är holländare. Nu är bättre än aldrig. Fast aldrig är ofta bättre än *just* nu. Om implementeringen är svår att förklara är det en dålig idé. Om implementeringen är lätt att förklara kan det vara en bra idé. Namnutrymmen är en tutande bra idé – låt oss göra fler av dem!

    Översatt låter det så här:

    • Vackert är bättre än fult.
    • Explicit är bättre än implicit.
    • Enkelt är bättre än komplext.
    • Komplext är bättre än förvirrande.
    • Platt är bättre än kapslad.
    • Gles är bättre än tät.
    • Läsbarheten är viktig.
    • Särskilda fall är inte tillräckligt speciella för att bryta mot reglerna.
    • Samtidigt är det praktiska viktigare än perfektion.
    • Misstag ska aldrig tystas ner.
    • Om de inte är tydligt tystade.
    • När du ställs inför tvetydighet, motstå frestelsen att gissa.
    • Det måste finnas en - och helst bara en - självklart sätt gör det.
    • Även om det kanske inte är självklart till en början om du inte är holländare.
    • Nu är bättre än aldrig.
    • Även om det aldrig ofta är bättre än just nu.
    • Om genomförandet är svårt att förklara är tanken dålig.
    • Om genomförandet är lätt att förklara är idén förmodligen bra.
    • Namnutrymmen är en fantastisk sak! Vi kommer att göra fler av dem!

    Pytonormär ett aktivt utvecklande programmeringsspråk, nya versioner släpps ungefär vartannat och ett halvt år. På grund av detta och några andra skäl, Pytonorm Det finns inga ANSI, ISO eller andra officiella standarder.

    Historien om skapandet av språket

    Utvecklingen av Python-språket började i slutet av 1980-talet av en anställd vid det holländska CWI-institutet. Amoebas distribuerade OS krävde en utökningsbar skriptspråk för vilket Guido van Rossum skapade Python. Nytt språk lånade en del utvecklingar för ABC-språket, som var inriktat på undervisning i programmering. I februari 1991 publicerade Guido källtexten i nyhetsgruppen alt.sources. Namnet på språket kommer inte från typen av reptil. Författaren döpte språket efter den populära brittiska komediserien Monty Pythons flygande cirkus från 1970-talet. Men språkets emblem representeras av ormhuvuden. Efter omfattande tester släpptes den första versionen av Python 3.0. Idag stöds båda utvecklingsgrenarna (Python 3.x och 2.x).

    Python skapades under inflytande av många programmeringsspråk: Modula-3, C, C++, Smalltalk, Lisp, Fortran, Java, Miranda, Icon. Även om Python har en ganska distinkt syntax, är en av språkets designprinciper principen om minsta överraskning.

    Standardbibliotek

    Det rika standardbiblioteket är en av Pythons attraktioner. Den tillhandahåller verktyg för att arbeta med många nätverksprotokoll och Internetformat. Det finns moduler att arbeta med vanliga uttryck, textkodningar, multimediaformat, kryptografiska protokoll, arkiv. Förutom standardbibliotek det finns många bibliotek som tillhandahåller ett gränssnitt till alla systemsamtal på olika plattformar.
    För Python har databasprogrammeringsgränssnittsspecifikationen DB-API 2 antagits och paket som motsvarar denna specifikation har utvecklats för åtkomst till olika DBMS: Oracle, MySQL, PostgreSQL, Sybase, Firebird (Interbase), Informix, Microsoft SQL Server och SQLite.
    NumPy-bibliotek att arbeta med flerdimensionella arrayer låter dig uppnå vetenskaplig beräkningsprestanda jämförbar med specialiserade paket. SciPy använder NumPy och ger tillgång till ett brett utbud av matematiska algoritmer. Numarray är speciellt utformad för operationer med stora mängder vetenskaplig data.
    Python ger en enkel och bekväm mjukvarugränssnitt C API för att skriva egna moduler i C och C++ språk. Ett verktyg som SWIG låter dig nästan automatiskt få bindningar för att använda C/C++-bibliotek i Python-kod. Standardbiblioteksverktyget ctypes tillåter Python-program att komma åt direkt dynamiska bibliotek, skrivet i C. Det finns moduler som låter dig bädda in C/C++-kod direkt i källfiler Python, skapa tillägg i farten.
    Python och de allra flesta bibliotek för det är gratis och tillhandahålls i källkod. Dessutom, till skillnad från många öppna system, begränsar licensen inte med Python i kommersiell utveckling och ålägger inga andra skyldigheter än angivande av upphovsrätt.

    Användningsområden

    Python är ett stabilt och utbrett språk. Det används i många projekt och olika kvaliteter: Som primärt programmeringsspråk eller för att skapa applikationstillägg och integrationer. Implementerad i Python Ett stort antal projekt används det också aktivt för att skapa prototyper av framtida program. Python används av många stora företag.
    Python med NumPy, SciPy och MatPlotLib-paketen används aktivt som en universell miljö för vetenskapliga beräkningar som ersättning för de vanliga specialiserade kommersiella paketen Matlab, IDL, etc.
    I professionella program 3D-grafik som Houdini och Nuke, Python används för att utöka standardfunktioner program.

    Källor

    Presentationer

    Läxa

    Förbered meddelanden:

    • Python som ett verktyg för forskare
    • Python och Ruby (jämförelse)
    • Python och WEB
    • Skapa fönsterprogram med använder Python och grafiska bibliotek (wxPython, PyQt, PyGTK, etc.)

    För bara ett par decennier sedan verkade programmerare som någon sorts shamaner som visste något som var otillgängligt för andra. Ibland lärde sig folk programmering på knäna, klottrade kod på ett papper, eftersom "koncentrationen av datorenheter per capita" var extremt låg. Nuförtiden är det svårt att hitta en person som inte har ett hem stationär dator eller bärbar dator. Utbildningstekniken står inte heller stilla.

    Lite historia

    Programmeringsspråket Python började utvecklas av Guido van Rossum i slutet av åttiotalet. Guido var vid den tiden anställd på det holländska CWI-institutet. Han skrev detta språk på sin fritid och lade in några idéer om ABC-språket, där han deltog i arbetet.

    Tungan fick inte sitt namn efter reptilen. Faktum är att namnet var inspirerat av en populär brittisk komedishow från sjuttiotalet som heter Monty Pythons flygande cirkus, även om Python fortfarande är mycket oftare jämfört med en orm, vilket framgår av logotypen på den officiella webbplatsen (den har två ormhuvuden) .

    Van Rossums designintuition är inte den enda anledningen till att programmeringsspråket Python är så populärt. Att lära sig från grunden blir en trevlig och enkel uppgift, med tanke på närvaron av en vänlig gemenskap av användare.

    För inte så länge sedan, 2008, släpptes den första versionen av Python 3000 (3.0), som hade testats under lång tid, där många arkitektoniska brister eliminerades. Samtidigt försökte utvecklarna upprätthålla kompatibilitet med tidigare versioner av språket. Trots närvaron av en nyare version, stöds båda grenarna (2.x och 3.x).

    Kortfattat programmeringsspråk

    Python har ett antal fördelar jämfört med andra språk. Det är förståeligt nästan intuitivt och har en "transparent" syntax. Detta innebär att programkoden på detta språk är mycket lättare att läsa, vilket minskar tiden inte bara för att skriva den, utan också för olika modifieringar och kontroller.

    Naturligtvis kommer en "old school" programmerare att säga att du definitivt behöver kunna flera språk, men du kan till och med börja med att studera maskinkod. Men genom att slutföra en programmeringskurs i Python får en person inte bara specifik kunskap, utan också möjligheten att förverkliga sin kreativa natur genom att skapa applikationer och användbara program för sig själv. Kanske kommer programmering snart att bli lika nödvändigt som att kunna ett främmande språk.

    Diffidence

    Det är värt att avfärda missuppfattningen att programmering är svårt. Nej, programmering är mycket mer intressant än det verkar; Andra aktiviteter och den så kallade ”tidsbristen” eller lättja kan störa.

    Grundläggande litteratur hjälper dig att snabbt lära dig programmering i Python. Utbildningskursen bör börja med att läsa två böcker där du kan hämta grunderna. Den första är "Python Programming" av Mark Lutz, och den andra är "Python 3 Programming" av Mark Summerfield. Lutz bok beskriver i detalj, ibland till och med för mycket, alla grundläggande principer som språket bygger på. Vissa råder att läsa Mark Lutz inte för att bemästra, utan för att fördjupa grundläggande kunskaper. Summerfields bok förklarar allt mer kortfattat. Författaren skrämmer inte läsaren med några komplikationer. Det finns annan litteratur, men dessa läroböcker är de mest användbara och informativa.

    Introduktionskurs

    Låt oss komma ihåg grundskola. Som regel kommer till och med ett barn till första klass med några minimala kunskaper: vissa lärdes av sina föräldrar, andra gick till noll. Utbildning i programmeringsspråket Python tillhandahålls också. Det är verkligen bekvämt och "transparent", men utan minimal kunskap om de grundläggande principerna för programmen blir det svårt att lära sig. Det är som att lära sig noter utan att höra musiken. Därför bör de som aldrig har stött på programmering alls bekanta sig med det "inledande minimumet".

    CS50-föreläsningarna kommer att vara till hjälp. Detta är en kurs i datorprogrammering från Harvard University. Java Script I de första föreläsningarna förklaras dock interaktionen mellan datorn och programmen i allmänhet på ett lättillgängligt och begripligt sätt. Videoinspelningar av denna kurs med översättning är tillgängliga för den rysktalande användaren, ytterligare material, textversioner av föreläsningar och praktiska uppgifter. Videon kan hittas nästan var som helst, till exempel på YouTube, men allt material i sin helhet finns på Java Script-webbplatsen.

    På internet

    Programmeringsspråket Python blir allt mer populärt, så det har länge funnits flera portaler med mycket självlärande material. Till exempel "Python 3 för nybörjare." Den här sidan har mycket material för nybörjare, den kan användas som ett fuskblad. Det finns också en stor mängd information om detta ämne med fri tillgång på Codecademy-webbplatsen.

    Kommunikation på forum är också viktigt. Att studera ensam är alltid svårare, så försumma inte olika samhällen.

    Betalda kurser

    Du kan alltid använda betalkurser, men det kostar ibland mycket pengar och resultatet kan bli otillfredsställande. Därför är det givetvis lämpligt att välja kurser som erbjuder en kostnadsfri provuppgift. Till exempel finns det en intensivkurs om "Python Programming Fundamentals" på GeekBrains. Kursen är gratis och hålls var tionde dag. För att registrera dig måste du logga in på sidan.

    Råd: Vilka kurser du än väljer, bekanta dig först med grunderna i språket för att inte slösa tid på något som du enkelt kan lära dig på egen hand. Det räcker med att läsa böckerna som nämns ovan.

    Naturligtvis, när teorin är behärskad, vill du öva. Nick Parlantes föreläsningar måste nämnas här. De är på engelska, även om i allmänhet mycket bra pedagogisk litteratur är på engelska, och det borde inte vara förvånande. I sina föreläsningar undervisar Nick inte bara i programmeringsspråket Python, utan ger också utmärkta praktiska problem.

    Användande

    Programmeringsspråket Python har använts för att skapa många applikationer som många använder dagligen. Till exempel är detta den sjätte versionen av BitTorrent-torrentklienten. Även "Python" ("Python") används i rastergrafik Gimp editor. Det används för att skapa ytterligare moduler, filter, till exempel. Mycket av Civilization IV och Batterfield 2 är skrivna på detta språk.

    Python används av företag som Google, Facebook, Instagram, Dropbox och Pinterest. Det fungerar också i kärnan av Yandex Disk-applikationen. Cirka 10 % av företagets anställda skriver i Python, och många programmerare kallar det för sitt favoritspråk.

    Hur man kommer igång

    Ingen kod kan fungera "i luften"; programmeringsspråket Python följer också denna regel. Även om träning från grunden börjar med teori, börjar det i verkligheten, kan man säga, med en attityd Personlig dator arbetsmiljö. Hur man gör det? Det är enkelt: du måste följa länken till den officiella Python-webbplatsen, ladda ner och köra installationsprogrammet och sedan noggrant följa stegen som den föreslår.

    Observera att du måste ladda ner en fil som är lämplig för operativsystemet installerat på din dator!

    Om installationen lyckades öppnar du konsolen (vanligtvis kan detta göras med kortkommandot "ctrl+alt+T"). Nu kan du skriva ditt första program. Ange till exempel "python3". Om konsolen visar ett "välkomstmeddelande" där programversionen anges (till exempel 3.4.0), är allt i sin ordning, om inte, måste du installera den tredje versionen av Python med kommandot: "sudo apt -get installera python3”.
    Detta är dock inte nödvändigt. Du kan skriva kod på vilket bekvämt sätt som helst textredigerare, kör den sedan genom konsolen, eller så kan du använda IDLE-utvecklingsmiljön som följer med distributionen.

    Starta IDLE. För att skapa ett litet program behöver du bara skriva en rad kod.

    print("Hej världen!")

    Ange denna kod i IDLE-fönstret och tryck på Enter. Miljön kommer omedelbart att svara med handling - visa den önskade texten på skärmen. Det första programmet är klart.