Mester Python: 11 essensielle biblioteker og moduler

Biblioteker og moduler i Python: En dypdykk

Biblioteker og moduler er uunnværlige verktøy som gjør programmeringsarbeidet smidigere og mer effektivt.

Under utviklingen av komplekse prosjekter kan det dukke opp situasjoner der standard programmeringskonstruksjoner ikke strekker til. I slike tilfeller kommer biblioteker og moduler til unnsetning for å løse utfordringene.

Heldigvis har Python et rikt utvalg av moduler og biblioteker, både innebygde og tredjeparts, som kan benyttes i utviklingsarbeidet. I denne artikkelen skal vi utforske noen av disse, med fokus på de som er mest nyttige for Python-prosjekter. Vi begynner med de innebygde modulene.

# Innebygde moduler i Python

Python leveres med et mangfold av innebygde moduler som dekker ulike bruksområder. Vi skal se nærmere på noen av disse, sortert etter funksjonalitet.

Samlinger – Beholderdatatyper

Python tilbyr flere innebygde samlingstyper for lagring av data, som tupler, lister og ordbøker. Modulen «collections» utvider disse med ekstra funksjonalitet.

Et eksempel er «deque», en datastruktur som minner om en Python-liste, men med mulighet for å legge til og fjerne elementer fra begge ender. Dette er en operasjon som ofte er raskere enn med en vanlig liste. Bruk «deque» når det passer dine behov. La oss se et praktisk eksempel:

import collections
nums = [1, 2, 3]
# Oppretter en deque-samling fra listen
deque = collections.deque(nums)

print(deque)

# Legger til et element på slutten
deque.append(4)

print(deque)

# Legger til et element i starten
deque.appendleft(0)

print(deque)

# Fjerner elementet på slutten
deque.pop()

print(deque)

# Fjerner elementet i starten
deque.popleft()

print(deque)
  

Kjør denne koden og observer resultatene. Modulen «collections» inneholder også andre nyttige datastrukturer.

Noen eksempler er:

Counter:
Returnerer en ordbok med frekvensen av elementer i en liste.

UserList:
Brukes for en rask subklasse av listen.

UserDict:
Brukes for en rask subklasse av ordboken.

UserString:
Brukes for en rask subklasse av streng.

For å utforske alle datastrukturer og metoder, se dokumentasjonen for collections-modulen.

Et raskt tips: bruk den innebygde Python-funksjonen `dir(objekt)` for å se alle metoder til et gitt objekt.

CSV – filhåndtering

CSV-filer (Comma Separated Values) er et vanlig format for lagring av tabellformaterte data, ofte brukt for import og eksport fra regneark og databaser. Python har en innebygd modul, «csv», for håndtering av disse filene.

La oss se et eksempel på hvordan man leser data fra en CSV-fil.

Opprett en fil ved navn «sample.csv» og lim inn følgende innhold:

Name,Age,Graduation Year
Hafeez,21,2021
Aslan,23,2019
Rambabu,21,2021

Modulen «csv» har metoder for både å lese og skrive til CSV-filer. Her skal vi fokusere på å lese data:

import csv

with open('sample.csv') as file:
    # Oppretter en leser
    reader = csv.reader(file)
    
    # Leser linje for linje med en løkke
    for row in reader:
        # Hver linje er en liste med elementer
        # Slår sammen elementene ved hjelp av join()
        print(','.join(row))
  

Kjør koden for å se resultatet.
Modulen har også et `csv.writer()`-objekt for å skrive data til CSV-filer. Utforsk de andre metodene selv ved hjelp av `dir()` og `help()`. Det finnes også en annen innebygd modul, «json», for håndtering av JSON-filer.

Tilfeldig – generasjon

Modulen «random» brukes for å generere tilfeldige data i Python. Den kan benyttes i mange applikasjoner, som for eksempel spill.

Her er et enkelt eksempel på hvordan du genererer tilfeldige heltall innenfor et gitt område:

import random

# Genererer et tilfeldig tall mellom 1 og 100
print(random.randint(1, 100))
  

Utforsk andre metoder i modulen ved å bruke `dir()` og `help()`. La oss lage et enkelt tallgjettespill ved hjelp av denne modulen.

Slik fungerer spillet:

Programmet genererer et tilfeldig tall mellom 1 og 100. Brukeren gjetter tallet. Ved hvert forsøk får brukeren tilbakemelding om tallet er for lavt eller for høyt, inntil brukeren gjetter riktig tall. Antallet gjetninger vises til slutt.

Her er kildekoden:

# Importerer random-modulen
import random

# Genererer tilfeldig tall
random_number = random.randint(1, 100)

# Initialiserer antall forsøk
guess_count = 0

# Kjører løkke til brukeren gjetter tallet
while True:
    # Henter brukerens input
    user_guessed_number = int(input("Skriv et tall mellom 1-100: "))

    # Sjekker om tallet er likt
    if user_guessed_number == random_number:
        print(f"Du gjettet tallet riktig etter {guess_count} forsøk!")
        # Bryter løkken
        break
    elif user_guessed_number < random_number:
        print("Tallet er for lavt")
    elif user_guessed_number > random_number:
        print("Tallet er for høyt")

    # Øker antall forsøk
    guess_count += 1
  

Tkinter – GUI-applikasjoner

Tkinter er en innebygd modul for utvikling av grafiske brukergrensesnitt (GUI). Den er ansett som brukervennlig, spesielt for nybegynnere. Med Tkinter kan man utvikle applikasjoner som kalkulatorer, påloggingssystemer og tekstredigeringsprogrammer. Det finnes mange ressurser for å lære GUI-utvikling med Tkinter.

Det anbefales å studere de offisielle dokumentene. Start der, og skap vakre GUI-applikasjoner.

# Tredjepartsmoduler

Forespørsler – HTTP-forespørsler

Modulen «requests» brukes for å sende HTTP-forespørsler av ulike typer til en server. Den støtter HTTP/1.1-forespørsler og lar deg legge til overskrifter, data og andre elementer via Python-ordbøker. Siden dette er en tredjepartsmodul, må du installere den. Kjør følgende kommando i terminalen eller kommandolinjen:

pip install requests

Det er enkelt å arbeide med «requests». Her er et eksempel på hvordan man sender en GET-forespørsel og hva responsen inneholder:

import requests

# Sender en get-forespørsel
request = requests.get("https://www.google.com/")

# Skriver ut statuskode, URL og forespørselen
print(request.status_code)
print(request.url)
print(request.request)
  

Koden over skriver ut statuskode, URL og forespørselstype (GET, POST). Du får også tilgang til kilden til siden via `request.content`. Se dokumentasjonen for å lære mer om modulen.

BeautifulSoup4 – nettskraping

Biblioteket BeautifulSoup brukes til nettskraping. Det er en nyttig modul som er lett å komme i gang med, selv for nybegynnere. Se dokumentasjonen for mer informasjon. Her er et eksempel på hvordan man kan hente ut data fra en nettside:

Installer BeautifulSoup med kommandoen:

pip install beautifulsoup4

Her er en enkel kode som skraper en nettside:

## Skraper produktlisten fra ConsumerReport

## Importerer bs4 og requests
import bs4
import requests

## Initialiserer URL
url = "https://www.consumerreports.org/cro/a-to-z-index/products/index.htm"

## Henter responsen fra siden
page = requests.get(url)

## Lagrer innholdet i en variabel
html = page.content

## Oppretter et BeautifulSoup-objekt
soup = bs4.BeautifulSoup(html, "lxml")

## Finner div-taggen som inneholder produktnavn og lenker
div_class = "crux-body-copy"

## Henter alle div-tags med den spesifiserte klassen
div_tags = soup.find_all("div", class_=div_class)

## Skriver ut alle tags som inneholder produktnavn og lenker
for tag in div_tags:
    print(tag)
  

Kjør koden og opplev magien med nettskraping. Det finnes mange andre rammeverk for nettskraping som kan utforskes.

# Datavitenskap og maskinlæring

Det finnes flere biblioteker som er spesielt utviklet for datavitenskap og maskinlæring, ofte skrevet i C for ytelsens skyld.

Numpy

Numpy brukes for vitenskapelige beregninger.

Biblioteket gir mulighet for å arbeide med flerdimensjonale matriser. Det finnes ikke implementert i Python. Numpy brukes ofte i maskinlæringsprosjekter. Det er et brukervennlig og åpent kildekode-bibliotek, ofte brukt av dataforskere for komplekse matematiske beregninger.

Installer numpy med kommandoen:

pip install numpy

Pandaer

Pandaer er en modul for dataanalyse. Den lar oss filtrere data på en effektiv måte og tilbyr datastrukturer som er praktiske å jobbe med, samt filhåndteringsfunksjoner.

Installer modulen med kommandoen:

pip install pandas

Matplotlib

Matplotlib er et 2D-grafplottbibliotek. Det kan visualisere data i form av ulike diagrammer og figurer. Eksempler er søylediagrammer, histogrammer og spredningsplott.

Installer modulen med kommandoen:

pip install matplotlib

Et tips: Installer Anaconda for å få alle bibliotekene du trenger for datavitenskap.

Hvis du er interessert i datavitenskap og maskinlæring med Python, anbefales dette Udemy-kurset.

# Nettrammeverk

Det finnes en rekke nettrammeverk i Python. Vi skal se nærmere på to av de mest brukte: Django og Flask.

Django

Django er et åpent kildekode-nettrammeverk utviklet i Python. Det er velegnet for å skape nettsider av alle slag. Populære nettsteder som Instagram, Bitbucket, Disqus og Mozilla Firefox er bygget med Django.

  • Django gir mulighet til å bygge komplekse nettsider raskt.
  • Rammeverket håndterer mange av de vanlige oppgavene ved utvikling av nettsider.
  • Django sørger for beskyttelse mot angrep som SQL-injeksjon, cross-site scripting og cross-site request forgery.
  • Det kan brukes til alt fra innholdsstyringssystemer til sosiale medier.

Dokumentasjonen til Django er meget god. Du må ha kjennskap til Python. Det er lett å lære Django.

Flask

Flask er et lettvektsnettrammeverk som er utviklet i Python.

Det er mer pytonisk enn Django og har utmerket dokumentasjon her. Det bruker Jinja-malmotoren. Det er mer komplisert å bygge store nettsteder med Flask. De fleste funksjonene som URL-ruting, forespørselshåndtering, sikre informasjonskapsler og økter er tilgjengelig i både Django og Flask.

Velg rammeverk ut fra kompleksiteten til prosjektet ditt. Django er populært blant utviklere og er et av de mest brukte rammeverkene for webutvikling med Python.

Konklusjon

Forhåpentligvis har denne artikkelen gitt deg en innføring i noen av de mange modulene, bibliotekene og rammeverkene som finnes i Python.

Husk at alle en gang var nybegynnere.

Uansett hva du ønsker å lære, start med å lese dokumentasjonen. Hvis du har vansker med å forstå dokumentasjonen, finn videoopplæringer på læringsnettsider.