Grunderna i Python-syntaxen. Python programmeringsspråk


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 som den växande makten personliga datorer börjar ge tillräcklig körhastighet för 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 ett relativt nytt språk Python programmering(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 uppnås främst 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 på olika maskiner 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älla 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 av ett stort antal moduler anslutna till programmet, vilket ger 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änder ett omfattande bibliotek grafisk modellering 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 variabeldeklarationer. 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 särdrag Python är närvaron av strukturer inbyggda i själva språket som t.ex 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 "key" - "value" 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 helt enkelt motsvarande värde till elementet med den nya nyckeln:
    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 funktionerna i Python är hur en variabel tilldelas en annan, d.v.s. 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 en 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 objekten de namnger. (Du märker någon analogi med Prologspråk?) 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 en gammal till en variabel, men du kan inte ändra den gamla strängen själv).

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 operatörsparenteser början-slut, i C, C++, Java - tandställning(), i Basic används slutändelser av språkkonstruktioner (NEXT, WEND, END IF, END SUB).
    I Python är allt mycket enklare: att välja ett block med uttalanden utförs genom att flytta den valda gruppen med ett eller flera mellanslag eller tabbtecken åt höger i förhållande till huvudet på strukturen som det givna blocket 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

    Funktionsdeklaration



    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).
    del s 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


    Skapat av en inbyggd funktion öppen()(se 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 absolutvärde 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 den. 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) golv(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, men som använder datorteknik och programmering i sitt 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)

    Detta material är avsett för dig som redan är bekant med programmering och vill behärska programmeringsspråket Python. Den är utformad för att visa dig på 10 minuter funktionerna i Python-språket, syntaxfunktioner och de grundläggande principerna för att arbeta med Python med hjälp av exempel. Det finns inget "vatten" här - information som inte är direkt relaterad till programmeringsspråket. Låt oss börja!

    Programmeringsspråket Python är starkt typifierat (stark typning kännetecknas av att språket inte tillåter att olika typer i uttryck blandas och inte utför automatiska implicita konverteringar, till exempel kan du inte subtrahera en uppsättning från en sträng), det används dynamisk typning— alla typer bestäms under programexekveringen.

    Att deklarera variabler är valfritt, namn är skiftlägeskänsliga (var och VAR är två olika variabler).

    Python är ett objektorienterat språk, allt i språket är ett objekt.

    Få hjälp

    Hjälp (hjälp) i Python är alltid tillgänglig direkt i tolken. Om du vill veta hur ett objekt fungerar, ring hjälp( ). En annan användbar instruktion är dir() , som visar alla metoder för ett objekt och egenskaperna för objekt .__doc__ som visar docstringen:

    >>> help(5) Hjälp på int objekt: (etc etc) >>> dir(5) ["__abs__", "__add__", ...] >>> abs.__doc__ "abs(number) -> number Returnera det absoluta värdet av argumentet."

    Python-syntax

    Python har inga konstruktioner för slutblock (som till exempel klass- eller funktionsdeklarationer) – block definieras med indrag. Öka indraget i början av blocket, minska det i slutet av blocket. Påståenden som kräver indrag avslutas med ett kolon (:). Om du ännu inte har kod efter start-of-block-satsen, infoga en pass-sats för att klara syntaxkontrollen.

    Medan intervalllista == 1: godkänt

    Enradiga kommentarer börjar med ett hash-tecken (#), medan kommentarer med flera rader använder (""") i början och slutet av kommentaren.

    Värden tilldelas med likhetstecknet (“=”) (objekt namnges faktiskt i processen).

    Skillnadstestet utförs med två lika symboler ("==").

    Du kan öka ett värde med operatorn += och minska det med -= genom att ange en variabel på vänster sida och värdet med vilket ökningen/minskningen kommer att ske till höger. Detta fungerar med många datatyper i Python, inklusive strängar.

    Du kan tilldela ett värde till flera variabler på samma rad. Exempel:

    >>> myvar = 3 >>> myvar += 2 >>> myvar 5 >>> myvar -= 1 >>> myvar 4 """Detta är en flerradskommentar. Följande rader sammanfogar de två strängarna.""" >>> mystring = "Hej" >>> mystring += " värld." >>> print mystring Hello world. # Detta byter variablerna på en rad(!). # Det bryter inte mot stark skrivning eftersom värden inte # faktiskt tilldelas, men nya objekt är bundna till # de gamla namnen. >>> myvar, mystring = mystring, myvar

    Datatyper i Python

    Python tillhandahåller datatyper som listor, tupler och ordböcker. Uppsättningar finns också tillgängliga, med hjälp av setmodulen i versioner före Python 2.5 och inbyggda i språket i senare versioner.

    Listor liknar endimensionella arrayer. Det är möjligt att ha en lista som består av andra listor.

    Ordböcker är associativa arrayer där data nås med nyckel.

    Tuples är oföränderliga endimensionella arrayer.

    "Arrayer" i Python kan vara av vilken typ som helst, vilket innebär att du kan kombinera siffror, strängar och andra datatyper i listor/ordböcker/tupler.

    Indexet för det första elementet är 0. Ett negativt indexvärde börjar räknas från sista till första, [-1] kommer att peka på det sista elementet.

    Variabler kan peka på funktioner.

    >>> sample = , ("a", "tuple")] >>> mylist = ["Listobjekt 1", 2, 3.14] >>> mylist = "Lista objekt 1 igen" # Vi ändrar objektet >>> mylist[-1] = 3.21 # Här hänvisar vi till den sista posten >>> mydict = ("Nyckel 1": "Värde 1", 2: 3, "pi": 3.14) >>>. mydict["pi"] = 3.15 # Så här ändrar du ordboksvärden >>> mytuple = (1, 2, 3) >>> myfunction = len >>> print myfunction(mylist) 3.

    Du kan få en del av en array (lista eller tuppel) genom att använda ett kolon (:). Om du lämnar startindexvärdet tomt kommer det att indikera att man börjar från det första värdet. Negativa index räknas bakåt från slutet av arrayen (-1 kommer att peka på det sista elementet).

    Titta på exemplen:

    >>> mylist = ["Listobjekt 1", 2, 3.14] >>> skriv ut minlista[:] ["Listobjekt 1", 2, 3.1400000000000001] >>> skriv ut minlista ["Listobjekt 1", 2] > >> print mylist[-3:-1] ["List item 1", 2] >>> print mylist # Om du lägger till en tredje parameter kommer "step" att ha Python-steg i # N poststeg, snarare än 1. # T.ex. , kommer detta att returnera det första objektet, sedan gå till det tredje och # returnera det (alltså objekt 0 och 2 i 0-indexering). >>> skriv ut min lista[::2] ["Listobjekt 1", 3.14]

    Strängar i Python

    En apostrof (') eller dubbla citattecken(dubbelt citattecken - "). Detta gör att du kan ha citattecken inom en sträng indikerad med apostrof (till exempel "Han sa "hej." är en giltig sträng).

    Flerradiga strängar betecknas med en trippel apostrof eller citattecken ("""). Python stöder unicode direkt. Den andra versionen av Python använder dock tecknet (u) för att beteckna en sträng som innehåller unicode: u"Detta är en unicode-sträng." Python3 innehåller alla strängar Unicode. Om du i Python3 behöver en sekvens av byte, som i huvudsak var en sträng i tidigare versioner, används symbolen (b): b"Detta är en bytesträng".

    För att ersätta parametervärden i en sträng, använd operatorn (%) och en tupel. Varje %s ersätts av ett element från tupeln, från vänster till höger. Du kan också använda en ordbok för att ersätta namngivna parametrar:

    >>>skriv ut "Namn: %s\ Nummer: %s\ String: %s" % (myclass.name, 3, 3 * "-") Namn: Poromenos Nummer: 3 String: --- strString = """ Det här är en flerradssträng.""" # VARNING: Se upp för efterföljande s i "%(key)s". >>> skriv ut "Detta %(verb) är ett %(substantiv)s." % ("substantiv": "test", "verb": "är") Detta är ett test.

    Instruktioner för flödeskontroll - om, för, medan

    Om, for och while-satser används för att styra i vilken ordning ett program körs. Det finns ingen switch eller case i Python om används istället. For används för att iterera genom elementen i en lista (eller tupel). För att få en talföljd, använd range( ) . För att avbryta exekveringen av en loop används break.

    Syntaxen för denna konstruktion är följande:

    Rangelist = range(10) >>> skriv ut rangelist för nummer i rangelist: # Kontrollera om nummer är ett av # siffrorna i tupeln. om nummer i (3, 4, 7, 9): # "Break" avslutar en for utan att # exekvera "annat"-satsen. break else: # "Fortsätt" startar nästa iteration # av loopen. Det är ganska värdelöst här, # eftersom det är det sista uttalandet i loopen. fortsätt annat: # "else"-satsen är valfri och # exekveras endast om slingan inte "bröts" # Gör ingenting om rangelist == 2: skriv ut "Det andra objektet (listorna är 0-baserade) är 2". " elif rangelist == 3: print "Det andra objektet (listorna är 0-baserade) är 3" else: print "Vet inte" medan rangelist == 1: pass

    Funktioner i Python

    Funktioner deklareras med hjälp av nyckelord"def". Valfria argument visas i funktionsdeklarationen efter de obligatoriska och tilldelas ett standardvärde. När du anropar en funktion kan du skicka argument genom att ange deras namn och värde, samtidigt som du hoppar över delen valfria argument eller genom att ordna dem i en annan ordning än den som anges i funktionen.

    Funktioner kan returnera en tupel och genom att använda tuple unboxing kan du returnera flera värden.

    Lambdafunktioner är specialfunktioner som bearbetar ett enda argument.

    Parametrar skickas via referens. Genom att lägga till element i den godkända listan får du en uppdaterad lista utanför funktionen. I det här fallet kommer tilldelning av ett nytt värde till parametrar i en funktion att förbli en lokal åtgärd. Eftersom överföring endast överför minnesplatsen, kommer att tilldela ett nytt objekt till en parameter som en variabel att ett nytt objekt skapas.

    Kodexempel:

    # Samma som def funcvar(x): return x + 1 funcvar = lambda x: x + 1 >>> print funcvar(1) 2 # an_int och a_string är valfria, de har standardvärden # om ett inte godkänns ( 2 respektive "En standardsträng"). def passing_example(a_list, an_int=2, a_string="En standardsträng"): a_list.append("Ett nytt objekt") an_int = 4 returnera a_list, an_int, a_string >>> my_list = >>> my_int = 10 >> > print passing_example(my_list, my_int) (, 4, "En standardsträng") >>> my_list >>> my_int 10

    Python-klasser

    Python stöder en begränsad form av multipelt arv i klasser.

    Privata variabler och metoder kan deklareras (av konvention, detta kontrolleras inte av tolken) med två understreck i början och högst ett i slutet av namnet (t.ex.: "__spam").

    Vi kan också tilldela godtyckliga namn till klassinstanser. Se exempel:

    Klass MyClass(object): common = 10 def __init__(self): self.myvariable = 3 def myfunction(self, arg1, arg2): return self.myvariable # Detta är klassens instansiering >>> classinstance = MyClass() >> > classesinstance.myfunction(1, 2) 3 # Denna variabel delas av alla klasser. >>> classinstance2 = MyClass() >>> classinstance.common 10 >>> classinstance2.common 10 # Notera hur vi använder klassnamnet # istället för instansen. >>> MyClass.common = 30 >>> classinstance.common 30 >>> classinstance2.common 30 # Detta kommer inte att uppdatera variabeln på klassen, # istället kommer det att binda ett nytt objekt till det gamla # variabelnamnet. >>> classinstance.common = 10 >>> classinstance.common 10 >>> classinstance2.common 30 >>> MyClass.common = 50 # Detta har inte ändrats, eftersom "common" är # nu en instansvariabel. >>> classinstance.common 10 >>> classinstance2.common 50 # Denna klass ärver från MyClass. Exemplet # klassen ovan ärver från "objekt", vilket gör # till vad som kallas en "ny-stilsklass". # Multipelt arv deklareras som: # class OtherClass(MyClass1, MyClass2, MyClassN) class OtherClass(MyClass): # Argumentet "self" skickas automatiskt # och hänvisar till klassinstansen, så du kan ställa in # instansvariabler enligt ovan, men inifrån klassen def __init__(self, arg1): self.myvariable = 3 print arg1 >> > classinstance = OtherClass("hej") hej >>> classinstance.myfunction(1, 2) 3 # Den här klassen har ingen .test-medlem, men # vi kan lägga till en till instansen ändå. Notera # att detta endast kommer att vara medlem i klassinstansen. >>> classinstance.test = 10 >>> classinstance.test 10

    Undantag i Python

    Undantag i Python hanteras i try-except block:

    Def some_function(): try: # Division med noll höjer ett undantag 10 / 0 förutom ZeroDivisionError: skriv ut "Hoppsan, ogiltig." annat: # Undantag inträffade inte, vi är bra. pass finally: # Detta exekveras efter att kodblocket har körts # och alla undantag har hanterats, även # om ett nytt undantag uppstår under hanteringen. print "Vi är klara med det." >>> some_function() Hoppsan, ogiltig. Vi är klara med det.

    Importera moduler i Python

    Externa bibliotek används efter import med nyckelordet import. Du kan också använda anpassade funktioner från import till import.

    Importera slumpmässig från tid import klocka randomint = random.randint(1, 100) >>> skriv ut randomint 64

    Arbeta med filer i Python

    Python har ett stort antal bibliotek för att arbeta med filer. Till exempel, serialisering (konvertera data till strängar med pickle-biblioteket):

    Importera pickle mylist = ["Detta", "är", 4, 13327] # Öppna filen C:\\binary.dat för att skriva. Bokstaven r före # filnamnssträngen används för att förhindra att omvänt snedstreck escapes. myfile = open(r"C:\\binary.dat", "w") pickle.dump(mylist, myfile) myfile.close() myfile = open(r"C:\\text.txt", "w" ) myfile.write("Detta är en exempelsträng") myfile.close() minfil = öppen(r"C:\\text.txt") >>> skriv ut myfile.read() "Detta är en exempelsträng" minfil .close() # Öppna filen för läsning. myfile = open(r"C:\\binary.dat") loadedlist = pickle.load(minfil) myfile.close() >>> skriv ut loadedlist ["Detta", "är", 4, 13327]

    Diverse

    • Villkoren kan hålla ihop, till exempel 1< a < 3 проверит, что a одновременно меньше 3 и больше 1.
    • Du kan använda del för att ta bort variabler eller element i arrayer.
    • Listor ger mycket kraftfulla datamanipuleringsmöjligheter. Du kan göra ett uttryck med använder för och efterföljande om eller för uttalanden:
    >>> lst1 = >>> lst2 = >>> print >>> print # Kontrollera om ett villkor är sant för alla föremål. # "any" returnerar sant om något objekt i listan är sant. >>> any()) True # Detta beror på att 4 % 3 = 1, och 1 är sant, så any() # returnerar True. # Kontrollera hur många objekt ett villkor är sant. >>> summa(1 för i i om i == 4) 2 >>> del lst1 >>> skriv ut lst1 >>> del lst1
    • Globala variabler deklareras utanför funktioner och kan läsas utan särskilda deklarationer inuti, men om du vill skriva ut dem måste du deklarera från i början av funktionen med hjälp av det speciella "global" nyckelordet, annars kommer Python att tilldela det nya värdet till den lokala variabeln:
    nummer = 5 def myfunc(): # Detta kommer att skriva ut 5. print number def anotherfunc(): # Detta ger upphov till ett undantag eftersom variabeln inte # har bundits före utskrift. Python vet att det ett #-objekt kommer att bindas till det senare och skapar ett nytt, lokalt #-objekt istället för att komma åt det globala. print number number = 3 def yetanotherfunc(): globalt nummer # Detta kommer att ändra den globala korrekt. nummer = 3

    Hur man lär sig Python-programmeringsspråket

    Detta material är inte avsett att vara en heltäckande guide till Python. Programmeringsspråket Python har ett stort antal bibliotek och olika funktioner som du kommer att bli bekant med när du fortsätter att arbeta med språket och studera ytterligare källor.

    Om informationen som presenteras inte räcker för dig, titta på det utökade materialet som beskriver programmeringsspråket Python - det ger information om språket mer detaljerat.

    Bland annat material rekommenderar jag Learn Python The Hard Way. Och, naturligtvis, The Python 2 Tutorial och The Python 3 Tutorial.

    Stort tack till Stavros Korokithakis för hans utmärkta handledning "Lär dig Python på 10 minuter".

    Om du vill förbättra något i detta material, skriv gärna i kommentarerna.

    27 augusti 2012 klockan 15:18

    Lär dig Python effektivt

    • Pytonorm

    Hej alla!

    Människoläsbar syntax, lätt att lära sig, högnivåspråk, objektorienterat programmeringsspråk (OOP), kraftfullt, interaktivt läge, många bibliotek. Många andra fördelar... Och allt detta på ett språk.
    Låt oss först dyka in i möjligheterna och ta reda på vad Python kan göra?

    Varför behöver jag din Python?

    Många nya programmerare ställer liknande frågor. Det är som att köpa en telefon, säg mig varför ska jag köpa den här telefonen och inte den här?
    Programvarukvalitet
    För många, inklusive mig, är de främsta fördelarna den mänskliga läsbara syntaxen. Inte många språk kan skryta med det. Python-kod är lättare att läsa, vilket innebär att återanvändning och underhåll av den är mycket enklare än att använda kod på andra skriptspråk. Python innehåller de modernaste mekanismerna för att återanvända programkod, vilket är OOP.
    Stöd bibliotek
    Python kommer med ett stort antal kompilerade och bärbara funktioner som kallas standardbiblioteket. Detta bibliotek ger dig många funktioner som efterfrågas i applikationsprogram, allt från textsökning efter mönster till nätverksfunktioner. Python kan utökas både av dina egna bibliotek och med bibliotek skapade av andra utvecklare.
    Programportabilitet
    De flesta Python-program körs oförändrat på alla större plattformar. Att överföra programkod från Linux till Windows innebär enkel kopiering programfiler från en maskin till en annan. Python ger dig också många möjligheter att skapa portabla grafiska gränssnitt.
    Utvecklingshastighet
    Jämfört med kompilerade eller starkt typade språk som C, C++ eller Java, ökar Python utvecklarens produktivitet många gånger om. Python-koden är vanligtvis en tredjedel eller till och med en femtedel av motsvarande C++- eller Java-kod, vilket innebär mindre skrivning, mindre felsökningstid och mindre underhållsansträngning. Dessutom körs Python-program omedelbart utan den tidskrävande kompilerings- och länkningsstegen som krävs i vissa andra programmeringsspråk, vilket ytterligare ökar programmerarens produktivitet.

    Var används Python?

    • Google använder Python i sitt sökmotor och betalar för arbetet av skaparen av Python - Guido van Rossum
    • Företag som Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm och IBM använder Python för hårdvarutestning
    • YouTubes videodelningstjänst är till stor del implementerad i Python
    • NSA använder Python för kryptering och intelligensanalys
    • JPMorgan Chase, UBS, Getco och Citadel använder Python för finansmarknadsprognoser
    • Det populära BitTorrent-programmet för att utbyta filer på peer-to-peer-nätverk är skrivet i Python
    • Populärt webbramverk App Engine från Google använder Python som ett applikationsprogrammeringsspråk
    • NASA, Los Alamos, JPL och Fermilab använder Python för vetenskaplig beräkning.
    och andra företag använder också detta språk.

    Litteratur

    Så vi lärde känna programmeringsspråket Python bättre. Vi kan separat säga att fördelarna med Python är att den har mycket högkvalitativ litteratur. Inte alla språk kan skryta med detta. Till exempel kan programmeringsspråket JavaScript inte tillfredsställa användare med mycket litteratur, även om språket är riktigt bra.

    Här är källor som hjälper dig att lära känna Python bättre, och kanske bli framtidens Guido van Rossum.
    * Vissa källor kan vara på engelska. Du borde inte bli förvånad över detta, nu finns mycket utmärkt litteratur inskriven engelska språket. Och för själva programmeringen behöver du åtminstone kunna grundläggande kunskaper i engelska.

    Jag rekommenderar starkt att läsa boken först – Mark Lutz. Learning Python, 4:e upplagan. Boken har översatts till ryska, så var inte rädd om du plötsligt inte kan engelska. Men det är den fjärde upplagan.

    För den som kan engelska kan du läsa dokumentationen på den officiella Python-webbplatsen. Allt beskrivs där ganska tydligt.

    Och om du föredrar information från video, så kan jag rekommendera lektioner från Google, undervisade av Nick Parlante, en student från Stanford. Sex videoföreläsningar på YouTube. Men det finns en droppe salva i tunnan med salva... Han genomför den på engelska med engelska undertexter. Men jag hoppas att detta kommer att stoppa några.

    Vad ska jag göra om jag läser böcker men inte vet hur jag ska tillämpa kunskapen?

    Få inte panik!
    Jag rekommenderar att läsa boken av Mark Lutz. Python-programmering (4:e upplagan). Tidigare var det "studera", men här är det "Programmering". I "Learning" - får du kunskap om Python, i "Programmering" - lär Mark dig hur du tillämpar det i dina framtida program. Boken är mycket användbar. Och jag tror att en räcker för dig.

    Jag vill träna!

    Lätt.
    Ovan skrev jag om videoföreläsningar från Nick Parlante på YouTube, men de har också några

    Vilka program är skrivna i Python?

    Programvara för vanliga människor

    Låt oss först gå igenom de program som används av vanliga människor som inte är specialister inom informationsteknologi.

    BitTorrent

    Alla versioner upp till 6 av denna torrentklient skrevs i Python. Version 6 skrevs om i C++.

    Ubuntu Software Center

    Citat från Wikipedia:
    Ubuntu Application Center(Engelsk) Ubuntu Software Center) är gratis programvara för att hitta, installera och ta bort paket på ett Ubuntu Linux-system. V senaste versionerna Du kan köpa tidningar om Linux och Ubuntu, du kan också köpa betalspel och mjukvara. Applikationen är utvecklad i Python + Vala med hjälp av GTK+-bibliotek och är ett grafiskt skal för Advanced Packaging Tool.

    Blandare

    Citat från Wikipedia:
    Blandare- ett gratis, professionellt paket för att skapa tredimensionell Datorgrafik, som inkluderar verktyg för modellering, animering, rendering, videoefterbehandling och skapande av interaktiva spel. För närvarande är det den mest populära bland gratis 3D-redigerare på grund av dess snabba och stabila utveckling, som underlättas av ett professionellt utvecklingsteam.

    Python används som ett verktyg för att skapa verktyg och prototyper, logiksystem i spel, som ett sätt att importera/exportera filer (till exempel COLLADA) och automatisera uppgifter.

    Här är några dokumentationssidor:

    GIMP

    Citat från Wikipedia:
    Python används för att skriva ytterligare moduler, såsom filter.
    Här är några sidor som går djupare in i ämnet:

    Spel

    Civilisation IV

    Det mesta av spelet är skrivet i Python().

    Battlefield 2

    Det finns många handledningar och enkla recept på Internet för att ändra olika föremål och deras beteende.

    World of Tanks

    Citat från artikeln "GUI i spelet World of Tanks":
    Python används som skriptspråk i projektet. All skönhet som vi gjorde i Flash måste kopplas ihop i spelet, fyllas med data, bearbetas och översättas till verkliga handlingar i spelet. Allt detta görs i Python.
    En mer omfattande lista över spel som använder Python finns på Wikipedia och Python-dokumentationen.

    Vilka företag använder Python?

    Listan över företag som använder Python är lång. Bland dem finns Google, Facebook, Yahoo , NASA , Red Hat , IBM , Instagram , Dropbox, Pinterest, Quora, Yandex, Mail.Ru.

    Yandex

    Här är rapporten "Python i kärnan av Yandex.Disk". Sergey Ivashchenko (talare):
    Jag kommer att prata om hur vi använder Python i Yandex.Disk, vilka bibliotek och ramverk vi använder, vilka uppgifter vi löser och vilka problem vi stöter på. Jag kommer också att beröra ämnet loggning och bearbetning av asynkrona operationer.
    I en av videorna på Yandex-kanalen pratade anställda om sina favoritspråk.

    Och på Yandex företagsblogg finns en post "Vilka programmeringsspråk skrivs i Yandex" daterad 19 mars 2014. Så, 13 % av Yandex-anställda skriver större delen av sin arbetstid i Python.

    Mail.ru

    Mail.ru-anställda använder också Python. Den officiella Mail.ru-bloggen på Habré har flera artiklar om Python:

    Google

    Google har använt Python flitigt sedan starten. Det finns rykten om att de flesta av YouTube och Google Drive skrivet i Python. Google har utvecklat en hel molnplattform, Google App Engine, så att utvecklare kan köra Python-kod på Googles moln. Många språkutvecklare har arbetat och arbetar på Google.

    Dropbox

    Tjänsten är utvecklad i Python. Det är ingen slump att författaren till Python-språket, Guido van Rossum, jobbar på DropBox.

    Andra företag

    Organisationerna som använder Python

    Vilka områden används Python inom?

    webbutveckling

    Python är kanske den mest använda inom detta område. Django webbramverk fortsätter att ta fart och utökar sin armé av fans. Många nybörjare tror till och med att Python inte används någon annanstans. Men många andra webbramverk är skrivna i Python: Pylons TurboGears , CherryPy, Flask, Pyramid och andra. Du kan hitta en mer komplett lista.
    Det finns även ett CMS baserat på Django, det heter DjangoCMS.
    Mycket ofta skrivs webbplatsparsers i Python. Vanligtvis används Requests, aiohttp, BeautifulSoup, html5lib för detta. Det finns också verktyg på högre nivå för webbanalys: Skramligt, ta tag.

    Systemadministration

    Python är ett bra språk för att automatisera arbete systemadministratör. Den är installerad som standard på alla Linux-servrar. Det är enkelt och förståeligt. Python-koden är lätt att läsa. Vissa människor älskar Perl, jag älskar den också för dess bekväma arbete med vanliga uttryck men jag hatar Perl för dess syntax. Bash är användbart för relativt små till medelstora skript, men Python är kraftfullare och låter dig i vissa fall skriva mycket mindre kod.
    Det enda paketet jag känner till är Fabric. Kanske finns det något annat, skriv till mig i kommentarerna om du vet.

    ytterligare information

    Python för systemadministratörer (IBM developerWorks)
    Tyg dokumentation. Systemadministration.

    Inbyggda system

    Python används mycket ofta för programmering av inbyggda system. Det mest kända projektet som använder Python är Raspberry Pi. Men han är inte den enda:
    Inbäddad Python
    Raspberry Pi
    Python inbäddade verktyg
    Owl Embedded Python System

    Utveckling av applikationsprogramvara, inklusive spel

    Python används ofta som ett stödspråk vid utveckling av applikationsprogramvara. Jag har redan gett exempel ovan, jag kommer inte att upprepa dem.

    Vetenskaplig forskning

    Fysiker och matematiker älskar Python för dess enkelhet. Dessutom finns det ett stort antal bibliotek för Python som gör livet lättare för en vetenskapsman. Till exempel:
    1. SciPyär ett öppet bibliotek med högkvalitativa vetenskapliga verktyg för programmeringsspråket Python. SciPy innehåller moduler för optimering, integration, specialfunktioner, signalbehandling, bildbehandling, genetiska algoritmer, lösning av vanliga differentialekvationer och andra problem som ofta löses inom vetenskap och teknik.
    2. Matplotlib- ett bibliotek i programmeringsspråket Python för att visualisera data med tvådimensionell (2D) grafik (3D-grafik stöds också). De resulterande bilderna kan användas som illustrationer i publikationer.
    3. NumPyär en förlängning av Python-språket som lägger till stöd för stora flerdimensionella arrayer och matriser, tillsammans med ett stort bibliotek av matematiska funktioner på hög nivå för att arbeta på dessa arrayer.
    En mer omfattande lista över vetenskapliga datorbibliotek i Python finns på Wikipedia.

    Utbildning

    Python rekommenderas ofta som första programmeringsspråk.
    Vissa ryska skolor har framgångsrik erfarenhet av att lära skolbarn programmering i Python.
    Guido van Rossum var förresten imponerad av ABC-språket när han skrev Python. Och ABC-språket var avsett för träning och prototyper.

    Kritik av Python-språket

    Python är ett av de långsammaste programmeringsspråken

    På Internet kan du hitta många olika hastighetstester för program skrivna på olika programmeringsspråk. Python är vanligtvis i slutet av listor.
    Vanligtvis hänvisar Python till CPython, referensimplementeringen av språket. Det finns andra implementeringar av Python-språket, som PyPy. PyPy är snabbare än CPython och många andra programmeringsspråk för skript, och är mycket nära Java i hastighet. Men det finns ett problem - PyPy implementerar inte Python-språket fullt ut, på grund av detta fungerar inte många Python-program på det.
    Många programmerare skriver inlägg i C/C++ för att påskynda arbetet vid flaskhalsar. Python är inte designat för beräkningsuppgifter, för uppgifter som kräver mycket minne (minnesbundet) och liknande. Du måste kunna välja rätt verktyg för de uppgifter du står inför. Guido van Rossum berättar om detta i en intervju.

    GIL förhindrar att flera trådar körs samtidigt

    Global Interpreter Lock förhindrar att flera Python-trådar körs samtidigt. Dessa är funktioner i CPython. Men är detta en nackdel? Du måste förstå att allt beror på uppgiften. Om din uppgift beror på I/O-hastigheten (IO-bunden uppgift), så är det mer effektivt att använda flera processer som kommer att fungera asynkront med externa resurser. Och delade minnestrådar är bra för datoruppgifter (CPU-bundna). Men även om du behöver arbeta med trådar kan du inaktivera GIL ett tag, eftersom detta görs i det matematiska paketet NumPy.

    Inga bra distributionsverktyg

    Tyvärr är Python-kod, som har många beroenden av systembibliotek, svår att porta till andra system. Detta problem löses med virtualenv. men det här verktyget kritiseras mycket av systemadministratörer.

    ytterligare information

    Python framgångsberättelser
    Du använde Python för att skriva VAD?
    Vad används Python till?
    Ytterligare ett bevis på att det är Pythons värld och att vi bara lever i den
    MEDELLÖN FÖR JOBB SOM KRÄVER PYTHON
    Lista över Python-programvara




    

    2024 gtavrl.ru.