Vad är Python? Kraftfull, intuitiv programmering

Från 1991 ansågs Python-programmeringsspråket vara ett gap-filler, ett sätt att skriva manus som "automatiserar de tråkiga sakerna" (som en populär bok om att lära sig Python uttryckte det) eller att snabbt prototypa applikationer som kommer att implementeras på andra språk .

Under de senaste åren har Python dock framstått som en förstklassig medborgare inom modern programvaruutveckling, infrastrukturhantering och dataanalys. Det är inte längre ett back-room-verktygsspråk, utan en stor kraft i skapandet av webbapplikationer och systemhantering, och en viktig drivkraft för explosionen i stor dataanalys och maskinintelligens.

Relaterad video: Hur Python gör programmeringen enklare

Perfekt för IT, förenklar Python många typer av arbete, från systemautomation till arbete i banbrytande fält som maskininlärning.

Pythons viktigaste fördelar 

Pythons framgång kretsar kring flera fördelar som den ger både nybörjare och experter.

Python är lätt att lära sig och använda

Antalet funktioner på själva språket är blygsamt och kräver relativt lite tid eller ansträngning för att producera dina första program. Pythons syntax är utformad för att vara läsbar och enkel. Denna enkelhet gör Python till ett perfekt undervisningsspråk och låter nykomlingar plocka upp det snabbt. Som ett resultat spenderar utvecklare mer tid på att tänka på problemet de försöker lösa och mindre tid på att tänka på språkkomplexitet eller dechiffrera kod som lämnas av andra.

Python används i stort sett och stöds

Python är både populärt och i stor utsträckning, vilket den höga rankningen i undersökningar som Tiobe Index och det stora antalet GitHub-projekt som använder Python intygar. Python körs på alla större operativsystem och plattformar, och de flesta mindre. Många stora bibliotek och API-drivna tjänster har Python-bindningar eller omslag, vilket gör att Python kan kopplas fritt med dessa tjänster eller direkt använda dessa bibliotek. 

Python är inte ett ”leksakspråk”

Även om skript och automatisering täcker en stor del av Pythons användningsfall (mer om det senare), används Python också för att bygga programvara av professionell kvalitet, både som fristående applikationer och som webbtjänster. Python är kanske inte det snabbaste språket, men vad det saknar i hastighet kompenserar det för mångsidighet.

Python fortsätter framåt

Varje version av Python-språket lägger till användbara nya funktioner för att hålla jämna steg med modern mjukvaruutveckling. Asynkrona operationer och coroutines, till exempel, är nu standarddelar av språket, vilket gör det lättare att skriva Python-appar som utför samtidig behandling.

Vad Python används för

Det mest grundläggande användningsfallet för Python är som skripts- och automatiseringsspråk. Python är inte bara en ersättning för skalskript eller batchfiler; den används också för att automatisera interaktioner med webbläsare eller applikationsgränssnitt eller för att göra systemadministration och konfiguration i verktyg som Ansible och Salt. Men skript och automatisering representerar bara toppen av isberget med Python.

G eneral applikationsprogrammering med Python

Du kan skapa både kommandorads- och plattforms-GUI-applikationer med Python och distribuera dem som fristående körbara filer. Python har inte den inbyggda förmågan att generera en fristående binär från ett skript, men tredjepartspaket som cx_Freeze och PyInstaller kan användas för att uppnå detta.

Datavetenskap och maskininlärning med Python

Sofistikerad dataanalys har blivit ett av de snabbast rörliga områdena inom IT och ett av Pythons stjärnanvändningsfall. De allra flesta bibliotek som används för datavetenskap eller maskininlärning har Python-gränssnitt, vilket gör språket till det mest populära högnivåkommandogränssnittet för maskininlärningsbibliotek och andra numeriska algoritmer.

Webbtjänster och RESTful API: er i Python

Pythons infödda bibliotek och webbramar från tredje part ger snabba och praktiska sätt att skapa allt från enkla REST-API: er i några rader kod till fullblåsta, datadrivna webbplatser. Pythons senaste versioner har starkt stöd för asynkrona operationer och låter webbplatser hantera tiotusentals förfrågningar per sekund med rätt bibliotek.

Metaprogrammering och kodgenerering i Python

I Python är allt på språket ett objekt, inklusive Python-moduler och bibliotek själva. Detta låter Python fungera som en mycket effektiv kodgenerator, vilket gör det möjligt att skriva applikationer som manipulerar sina egna funktioner och har den typ av töjbarhet som det skulle vara svårt eller omöjligt att ta fram på andra språk.

Python kan också användas för att driva kodgenereringssystem, såsom LLVM, för att effektivt skapa kod på andra språk.

”Limkod” i Python

Python beskrivs ofta som ett "limspråk", vilket betyder att det kan låta olika kod (vanligtvis bibliotek med C-språkgränssnitt) samverka. Dess användning inom datavetenskap och maskininlärning är i denna riktning, men det är bara en inkarnation av den allmänna idén. Om du har applikationer eller programdomäner som du vill koppla ihop men inte kan prata med varandra direkt kan du använda Python för att ansluta dem.

Där Python kommer till kort

Det är också värt att notera vilka typer av uppgifter Python inte passar bra för.

Python är ett språk på hög nivå, så det är inte lämpligt för programmering på systemnivå - enhetsdrivrutiner eller OS-kärnor är ur bilden.

Det är inte heller perfekt för situationer som kräver fristående binära binära plattformar . Du kan bygga en fristående Python-app för Windows, MacOS och Linux, men inte elegant eller helt enkelt.

Slutligen är Python inte det bästa valet när hastighet är en absolut prioritet i alla aspekter av applikationen. För det är du bättre med C / C ++ eller ett annat språk av den kalibern.

Hur Python gör programmeringen enkel

Pythons syntax är tänkt att vara läsbar och ren, med lite förevändning. En vanlig “hejvärld” i Python 3.x är inget annat än:

skriva ut (“Hello world!”)

Python ger många syntaktiska element för att kortfattat uttrycka många vanliga programflöden. Tänk på ett exempelprogram för att läsa rader från en textfil till ett listobjekt, och ta bort varje rad av dess avslutande newline-karaktär längs vägen:

med öppen ('myfile.txt') som min_fil:

    file_lines = [x.rstrip ('\ n') för x i min_fil]

Den with/askonstruktionen är en kontext manager , vilket ger ett effektivt sätt att initiera ett objekt för ett block av kod och sedan göra sig av med det utanför det block. I det här fallet my_fileinstanseras objektet med open() funktionen. Detta tar platsen för flera rader panna för att öppna filen, läsa enskilda rader från den och sedan stänga den.

Den [x … for x in my_file]konstruktionen är en annan Python egenhet är listan förståelse . Det låter ett objekt som innehåller andra objekt (här, my_fileoch raderna det innehåller) iteras igenom, och det låter varje itererat element (det vill säga varje x) bearbetas och läggas automatiskt till en lista.

Du kan skriva en sådan sak som en formell for… slinga i Python, mycket som du skulle göra på ett annat språk. Poängen är att Python har ett sätt att ekonomiskt uttrycka saker som slingor som itererar över flera objekt och utför en enkel operation på varje element i slingan, eller att arbeta med saker som kräver uttrycklig instantiering och bortskaffande.

Konstruktioner som detta låter Python-utvecklare balansera tålighet och läsbarhet.

Pythons andra språkfunktioner är avsedda att komplettera vanliga användningsfall. De flesta moderna objekttyper - till exempel Unicode-strängar - är inbyggda direkt i språket. Datastrukturer - som listor, ordböcker (dvs. hashmaps eller nyckelvärdesbutiker), tuples (för lagring av oföränderliga samlingar av objekt) och uppsättningar (för lagring av samlingar av unika objekt) - finns som standardutgåvor.

Python 2 vs. Python 3

Python finns i två versioner, som är tillräckligt olika för att få många nya användare. Python 2.x, den äldre "legacy" -grenen, kommer att fortsätta att stödjas (det vill säga ta emot officiella uppdateringar) fram till 2020, och det kan fortsätta inofficiellt efter det. Python 3.x, den nuvarande och framtida inkarnationen av språket, har många användbara och viktiga funktioner som inte finns i Python 2.x, till exempel nya syntaxfunktioner (t.ex. "valrossoperatören"), bättre samtidighetskontroller och mer effektiv tolk.

Antagandet av Python 3 avbröts längst av den relativa bristen på tredjepartsbiblioteksstöd. Många Python-bibliotek har endast stöd för Python 2, vilket gör det svårt att byta. Men under de senaste åren har antalet bibliotek som bara stöder Python 2 minskat; alla de mest populära biblioteken är nu kompatibla med både Python 2 och Python 3. Idag är Python 3 det bästa valet för nya projekt; det finns ingen anledning att välja Python 2 om du inte har något val. Om du har fastnat med Python 2 har du olika strategier till ditt förfogande.

Pythons bibliotek

Framgången med Python vilar på ett rikt ekosystem med programvara från första och tredje part. Python drar nytta av både ett starkt standardbibliotek och ett generöst sortiment av lätt erhållna och lättanvända bibliotek från tredjepartsutvecklare. Python har berikats av årtionden av expansion och bidrag.

Pythons standardbibliotek erbjuder moduler för vanliga programmeringsuppgifter - matematik, stränghantering, fil- och katalogåtkomst, nätverk, asynkrona operationer, trådning, hantering av flera processer och så vidare. Men det innehåller också moduler som hanterar vanliga högnivåprogrammeringsuppgifter som behövs för moderna applikationer: läsning och skrivning av strukturerade filformat som JSON och XML, manipulering av komprimerade filer, arbete med internetprotokoll och dataformat (webbsidor, URL: er, e-post). De flesta externa koder som exponerar ett C-kompatibelt främmande funktionsgränssnitt kan nås med Pythons ctypesmodul.

Standard Python-distributionen ger också ett rudimentärt, men användbart, gränssnitts-GUI-bibliotek via Tkinter och en inbäddad kopia av SQLite 3-databasen.

De tusentals tredjepartsbiblioteken, tillgängliga via Python Package Index (PyPI), utgör den starkaste utställningen för Pythons popularitet och mångsidighet.

Till exempel:

  • BeautifulSoup-biblioteket tillhandahåller en allt-i-ett-verktygslåda för att skrapa HTML - till och med knepig, trasig HTML - och extrahera data från den.
  • Requests gör arbetet med HTTP-förfrågningar i stor skala smärtfritt och enkelt.
  • Ramar som Flask och Django möjliggör snabb utveckling av webbtjänster som omfattar både enkla och avancerade användningsfall.
  • Flera molntjänster kan hanteras via Pythons objektmodell med Apache Libcloud.
  • NumPy, Pandas och Matplotlib påskyndar matematiska och statistiska operationer och gör det enkelt att skapa visualiseringar av data.

Pythons kompromisser

Precis som C #, Java och Go har Python minneshantering som samlar på sopor, vilket betyder att programmeraren inte behöver implementera kod för att spåra och släppa objekt. Normalt sker skräpsamling automatiskt i bakgrunden, men om det utgör ett prestandaproblem kan du utlösa det manuellt eller inaktivera det helt eller förklara hela regioner av objekt som är undantagna från skräpsamling som en prestationsförbättring.

En viktig aspekt av Python är dess dynamik . Allt på språket, inklusive funktioner och moduler i sig, hanteras som objekt. Detta går på bekostnad av hastighet (mer om det senare), men gör det mycket lättare att skriva högnivåkod. Utvecklare kan utföra komplexa objektmanipulationer med endast några få instruktioner och till och med behandla delar av en applikation som abstraktioner som kan ändras om det behövs.

Pythons användning av betydande blanksteg har citerats som både en av Pythons bästa och värsta attribut. Fördjupningen på andra raden nedan är inte bara för läsbarhet; det är en del av Pythons syntax. Pythontolkar kommer att avvisa program som inte använder rätt indrag för att indikera kontrollflöde.

med öppen ('myfile.txt') som min_fil:

    file_lines = [x.rstrip ('\ n') för x i min_fil]

Syntaktiskt vitt utrymme kan få näsorna att skrynklas, och vissa människor avvisar Python av denna anledning. Men strikta indragningsregler är mycket mindre påträngande i praktiken än vad de kan se ut i teorin, även med de mest minimala kodredigerarna, och resultatet är kod som är renare och mer läsbar.

En annan potentiell avstängning, särskilt för de som kommer från språk som C eller Java, är hur Python hanterar variabel skrivning. Som standard använder Python dynamisk eller "anka" -typning - bra för snabbkodning, men potentiellt problematisk i stora kodbaser. Med det sagt har Python nyligen lagt till stöd för valfri kompileringstypstips, så projekt som kan dra nytta av statisk skrivning kan använda det.

Är Python långsam? Inte nödvändigtvis

En vanlig varning om Python är att den är långsam. Objektivt är det sant. Python-program körs vanligtvis mycket långsammare än motsvarande program i C / C ++ eller Java. Vissa Python-program kommer att vara långsammare med en storleksordning eller mer.