Programmering

Hvad er Python? Kraftfuld, intuitiv programmering

Fra 1991 blev Python-programmeringssproget betragtet som et gap-filler, en måde at skrive scripts, der "automatiserer de kedelige ting" (som en populær bog om Python-læring udtrykte det) eller hurtigt prototype applikationer, der vil blive implementeret på andre sprog. .

I løbet af de sidste par år er Python dog opstået som en førsteklasses borger inden for moderne softwareudvikling, infrastrukturadministration og dataanalyse. Det er ikke længere et back-room-værktøjssprog, men en vigtig kraft i oprettelse af webapplikationer og systemadministration og en nøgledriver til eksplosionen inden for stor dataanalyse og maskinintelligens.

Relateret video: Hvordan Python gør programmeringen nemmere

Python er perfekt til IT og forenkler mange slags arbejde, lige fra systemautomatisering til arbejde inden for banebrydende felter som maskinindlæring.

Pythons vigtigste fordele

Pythons succes drejer sig om flere fordele, det giver både begyndere og eksperter.

Python er let at lære og bruge

Antallet af funktioner på selve sproget er beskedent og kræver relativt lidt investering af tid eller kræfter for at producere dine første programmer. Python-syntaksen er designet til at være læselig og ligetil. Denne enkelhed gør Python til et ideelt undervisningssprog, og det lader nyankomne afhente det hurtigt. Som et resultat bruger udviklere mere tid på at tænke på det problem, de prøver at løse, og mindre tid på at tænke på sprogkompleksiteter eller dechiffrere kode, som andre har efterladt.

Python er bredt adopteret og understøttet

Python er både populær og udbredt, da den høje placering i undersøgelser som Tiobe Index og det store antal GitHub-projekter, der bruger Python, attesterer. Python kører på alle større operativsystemer og platforme, og de fleste mindre. Mange større biblioteker og API-drevne tjenester har Python-bindinger eller -indpakninger, hvilket gør det muligt for Python at grænseflade frit med disse tjenester eller direkte bruge disse biblioteker.

Python er ikke et ”legetøjssprog”

Selvom scripting og automatisering dækker et stort stykke af Pythons brugssager (mere om det senere), bruges Python også til at opbygge software i professionel kvalitet, både som enkeltstående applikationer og som webservices. Python er muligvis ikke det hurtigste sprog, men hvad det mangler i hastighed, kompenserer det for alsidighed.

Python bevæger sig fremad

Hver revision af Python-sproget tilføjer nyttige nye funktioner til at holde trit med moderne softwareudviklingspraksis. Asynkrone operationer og coroutines er for eksempel nu standarddele af sproget, hvilket gør det lettere at skrive Python-apps, der udfører samtidig behandling.

Hvad Python bruges til

Den mest basale brugssag til Python er som et scripting- og automatiseringssprog. Python er ikke kun en erstatning for shell-scripts eller batch-filer; det bruges også til at automatisere interaktioner med webbrowsere eller applikations-GUI'er eller til at foretage systemadministration og konfiguration i værktøjer som Ansible og Salt. Men scripting og automatisering repræsenterer kun toppen af ​​isbjerget med Python.

Gprogrammering af generel applikation med Python

Du kan oprette både kommandolinjeprogrammer og cross-platform GUI-applikationer med Python og implementere dem som selvstændige eksekverbare filer. Python har ikke den oprindelige evne til at generere en enkeltstående binær fra et script, men tredjepartspakker som cx_Freeze og PyInstaller kan bruges til at opnå det.

Datalogi og maskinindlæring med Python

Sofistikeret dataanalyse er blevet et af de hurtigste områder inden for it og et af Pythons stjernetilfælde. Langt størstedelen af ​​de biblioteker, der bruges til datalogi eller maskinindlæring, har Python-grænseflader, hvilket gør sproget til det mest populære kommandogrænseflade på højt niveau til maskinlæringsbiblioteker og andre numeriske algoritmer.

Webtjenester og RESTful API'er i Python

Pythons oprindelige biblioteker og tredjeparts webrammer giver hurtige og bekvemme måder at oprette alt fra enkle REST API'er i et par linjer med kode til fuldblæst, datadrevne websteder. Pythons nyeste versioner har stærk understøttelse af asynkrone operationer, hvilket gør det muligt for websteder at håndtere titusinder af anmodninger per sekund med de rigtige biblioteker.

Metaprogrammering og kodegenerering i Python

I Python er alt på sproget et objekt, inklusive Python-moduler og selve biblioteker. Dette lader Python fungere som en meget effektiv kodegenerator, hvilket gør det muligt at skrive applikationer, der manipulerer deres egne funktioner og har den slags udvidelsesmuligheder, der ville være vanskelige eller umulige at trække ud på andre sprog.

Python kan også bruges til at køre kodegenereringssystemer, såsom LLVM, til effektivt at oprette kode på andre sprog.

“Limkode” i Python

Python beskrives ofte som et "limsprog", hvilket betyder, at det kan lade forskellig kode (typisk biblioteker med C-sproggrænseflader) fungere sammen. Dens anvendelse i datalogi og maskinindlæring er i denne retning, men det er kun en inkarnation af den generelle idé. Hvis du har applikationer eller programdomæner, som du gerne vil tilslutte, men ikke kan tale direkte med hinanden, kan du bruge Python til at forbinde dem.

Hvor Python kommer til kort

Det er også værd at bemærke, hvilke slags opgaver Python er ikke velegnet til.

Python er et sprog på højt niveau, så det er ikke egnet til programmering på systemniveau - enhedsdrivere eller OS-kerner er ude af billedet.

Det er heller ikke ideelt til situationer, der kræver platform enkeltstående binære filer. Du kunne oprette en enkeltstående Python-app til Windows, MacOS og Linux, men ikke elegant eller simpelthen.

Endelig er Python ikke det bedste valg, når hastighed er en absolut prioritet i alle aspekter af applikationen. Til det har du det bedre med C / C ++ eller et andet sprog i den kaliber.

Hvordan Python gør programmering enkel

Pythons syntaks er beregnet til at være læselig og ren med lidt foregivelse. En standard “hej verden” i Python 3.x er intet andet end:

print ("Hej verden!")

Python giver mange syntaktiske elementer for kortfattet at udtrykke mange almindelige programstrømme. Overvej et eksempelprogram til læsning af linjer fra en tekstfil til et listeobjekt og fjern hver linje af dens afsluttende newline-karakter undervejs:

med åben ('myfile.txt') som min_fil:

file_lines = [x.rstrip (‘\ n’) for x i min_fil]

Det med / som konstruktion er en kontekst manager, som giver en effektiv måde at instantiere et objekt til en kodeblok og derefter bortskaffe den uden for den blok. I dette tilfælde er genstanden min_fil, instantieret med åben() fungere. Dette finder sted for flere linjer kedelplade for at åbne filen, læse individuelle linjer fra den og derefter lukke den op.

Det [x… for x i min_fil] konstruktion er et andet Python-idiosynkrasi, det listeforståelse. Det lader et emne, der indeholder andre emner (her, min_fil og linjerne den indeholder) gentages igennem, og det lader hvert itereret element (det vil sige hver) x) behandles og automatisk føjes til en liste.

Du kunne skriv sådan en formel til… loop i Python, ligesom du ville gøre det på et andet sprog. Pointen er, at Python har en måde til økonomisk at udtrykke ting som sløjfer, der gentager sig over flere objekter og udfører en simpel operation på hvert element i sløjfen eller at arbejde med ting, der kræver eksplicit instantiering og bortskaffelse.

Konstruktioner som denne gør det muligt for Python-udviklere at balancere tærhed og læsbarhed.

Pythons andre sprogfunktioner er beregnet til at supplere almindelige brugssager. De fleste moderne objekttyper - for eksempel Unicode-strenge - er indbygget direkte i sproget. Datastrukturer - som lister, ordbøger (dvs. hashmaps eller nøgleværdilagre), tupler (til lagring af uforanderlige samlinger af objekter) og sæt (til lagring af samlinger af unikke objekter) - er tilgængelige som standardudgivelseselementer.

Python 2 vs. Python 3

Python er tilgængelig i to versioner, som er forskellige nok til at give flere nye brugere. Python 2.x, den ældre "arv" -gren, vil fortsat blive understøttet (dvs. modtage officielle opdateringer) frem til 2020, og den kan fortsætte uofficielt efter det. Python 3.x, den nuværende og fremtidige inkarnation af sproget, har mange nyttige og vigtige funktioner, der ikke findes i Python 2.x, såsom nye syntaksfunktioner (f.eks. "Hvalrosoperatøren"), bedre samtidighedskontrol og mere effektiv tolk.

Vedtagelsen af ​​Python 3 blev langsomt langsomt på grund af den relative mangel på tredjepartsbiblioteksstøtte. Mange Python-biblioteker understøttede kun Python 2, hvilket gjorde det vanskeligt at skifte. Men i løbet af de sidste par år er antallet af biblioteker, der kun understøtter Python 2, aftaget; alle de mest populære biblioteker er nu kompatible med både Python 2 og Python 3. I dag er Python 3 det bedste valg til nye projekter; der er ingen grund til at vælge Python 2, medmindre du ikke har noget valg. Hvis du sidder fast med Python 2, har du forskellige strategier til din rådighed.

Pythons biblioteker

Pythons succes hviler på et rigt økosystem med første- og tredjepartssoftware. Python nyder godt af både et stærkt standardbibliotek og et stort udvalg af let opnåede og let anvendte biblioteker fra tredjepartsudviklere. Python er blevet beriget med årtier af ekspansion og bidrag.

Pythons standardbibliotek leverer moduler til almindelige programmeringsopgaver — matematik, strenghåndtering, fil- og biblioteksadgang, netværk, asynkrone operationer, threading, multiprocess-styring og så videre. Men det inkluderer også moduler, der administrerer almindelige programmeringsopgaver på højt niveau, der er nødvendige for moderne applikationer: at læse og skrive strukturerede filformater som JSON og XML, manipulere komprimerede filer, arbejde med internetprotokoller og dataformater (websider, URL'er, e-mail). De fleste eksterne koder, der udsætter en C-kompatibel udenlandsk funktionsgrænseflade, er tilgængelige med Pythons ctyper modul.

Standard-Python-distributionen giver også et rudimentært, men nyttigt, tværgående platform GUI-bibliotek via Tkinter og en indlejret kopi af SQLite 3-databasen.

De tusinder af tredjepartsbiblioteker, der er tilgængelige via Python Package Index (PyPI), udgør det stærkeste udstillingsvindue for Pythons popularitet og alsidighed.

For eksempel:

  • BeautifulSoup-biblioteket indeholder en alt-i-en-værktøjskasse til at skrabe HTML - endda vanskelig, brudt HTML - og udtrække data fra den.
  • Anmodninger gør arbejde med HTTP-anmodninger i stor skala smertefrit og simpelt.
  • Rammer som Flask og Django muliggør hurtig udvikling af webtjenester, der omfatter både enkle og avancerede brugssager.
  • Flere skytjenester kan administreres via Pythons objektmodel ved hjælp af Apache Libcloud.
  • NumPy, Pandas og Matplotlib fremskynder matematiske og statistiske operationer og gør det let at oprette visualiseringer af data.

Pythons kompromiser

Ligesom C #, Java og Go har Python affaldsindsamlet hukommelsesstyring, hvilket betyder, at programmøren ikke behøver at implementere kode for at spore og frigive objekter. Normalt sker skraldopsamling automatisk i baggrunden, men hvis det udgør et ydeevneproblem, kan du udløse det manuelt eller deaktivere det helt eller erklære hele områder af objekter, der er fritaget for skraldopsamling, som en præstationsforbedring.

Et vigtigt aspekt af Python er dens dynamik. Alt på sproget, inklusive funktioner og moduler, håndteres som objekter. Dette kommer på bekostning af hastighed (mere om det senere), men gør det langt nemmere at skrive kode på højt niveau. Udviklere kan udføre komplekse objektmanipulationer med kun få instruktioner og endda behandle dele af en applikation som abstraktioner, der kan ændres, hvis det er nødvendigt.

Pythons brug af betydelig hvid plads er blevet citeret som både en af ​​Pythons bedste og værste egenskaber. Indrykket på anden linje nedenfor er ikke kun for læsbarhed; det er en del af Pythons syntaks. Python-tolke afviser programmer, der ikke bruger korrekt indrykning for at indikere kontrolflow.

med åben ('myfile.txt') som min_fil:

file_lines = [x.rstrip (‘\ n’) for x i min_fil]

Syntaktisk hvidt rum kan få næser til at rynke, og nogle mennesker afviser Python af denne grund. Men strenge indrykningsregler er langt mindre påtrængende i praksis, end de måske ser ud til i teorien, selv med de mest minimale kodeditorer, og resultatet er kode, der er renere og mere læselig.

En anden potentiel afbrydelse, især for dem der kommer fra sprog som C eller Java, er hvordan Python håndterer variabel skrivning. Som standard bruger Python dynamisk eller "duck" -type - fantastisk til hurtig kodning, men potentielt problematisk i store kodebaser. Når det er sagt, har Python for nylig tilføjet understøttelse af valgfri kompileringstids-tip, så projekter, der muligvis kan drage fordel af statisk typing, kan bruge det.

Er Python langsom? Ikke nødvendigvis

En almindelig advarsel om Python er, at den er langsom. Objektivt er det sandt. Python-programmer kører generelt meget langsommere end tilsvarende programmer i C / C ++ eller Java. Nogle Python-programmer vil være langsommere med en størrelsesorden eller mere.

$config[zx-auto] not found$config[zx-overlay] not found