Python-importerklæringer forklaret

Mens du lærer programmering og læser nogle ressourcer, er du stødt på dette ord 'abstraktion', hvilket simpelthen betyder at reducere og genbruge koden så meget som muligt.

Funktioner og moduler letter abstraktion. Du opretter funktioner, når du vil gøre noget gentagne gange i en fil.

Moduler kommer ind i billedet, når du vil genbruge en gruppe funktioner i forskellige kildefiler. Moduler er også nyttige til at strukturere programmet godt.

  • Brug af standardbiblioteker og andre tredjepartsmoduler
  • Strukturering af programmet

Brug af standardbiblioteker

Eksempel: Du kan læse om metoderne / funktionerne i alle standardbibliotekerne i de officielle Python Docs i detaljer.

import time for i in range(100): time.sleep(1) # Waits for 1 second and then executes the next command print(str(i) + ' seconds have passed') # prints the number of seconds passed after the program was started
:raket:

Kør kode

# To calculate the execution time of a part of program import time start = time.time() # code here end = time.time() print('Execution time:' , end-start)
:raket:

Kør kode

# Using math Module import math print(math.sqrt(100)) # prints 10
:raket:

Kør kode

Brug af tredjepartsmoduler

Tredjepartsmoduler leveres ikke med python, men vi skal installere det eksternt ved hjælp af pakkehåndtering som pipogeasy install

# To make http requests import requests rq = requests.get(target_url) print(rq.status_code)

Find ud af mere om python-anmodningsmodul her

At strukturere programmer

Vi ønsker at lave et program, der har forskellige funktioner med hensyn til primtal. Så lad os starte. Vi definerer alle funktionerne iprime_functions.py

# prime_functions.py from math import ceil, sqrt def isPrime(a): if a == 2: return True elif a % 2 == 0: return False else: for i in range(3,ceil(sqrt(a)) + 1,2): if a % i == 0: return False return True def print_n_primes(a): i = 0 m = 2 while True: if isPrime(m) ==True: print(m) i += 1 m += 1 if i == a: break

Nu vil vi bruge de funktioner, som vi lige har oprettet i, prime_functions.pyså vi opretter en ny fil playground.pytil at bruge disse funktioner.

Bemærk, at dette program er alt for simpelt til at lave to separate filer, det er bare for at demonstrere. Men når der er store komplekse programmer, er det virkelig nyttigt at lave forskellige filer.

# playground.py import prime_functions print(prime_functions.isPrime(29)) # returns True

Sortering af import

God praksis er at sortere importmoduler i tre grupper - standardimport af biblioteker, relateret tredjepartsimport og lokalimport. Inden for hver gruppe er det fornuftigt at sortere alfabetisk efter modulnavn. Du kan finde flere oplysninger i PEP8.

En af de vigtigste ting for Python-sprog er læsbarhed, og alfabetisk sorteringsmoduler er hurtigere at læse og søge. Det er også lettere at kontrollere, at noget er importeret, og undgå duplikeret import.

Fra X importerer Y: et eksempel

Her er et eksempel på et problem:

>>> from math import ceil, sqrt >>> # here it would be >>> sqrt(36) <<< 6
:raket:

Kør kode

Eller vi kunne bruge denne i stedet:

>>> import math >>> # here it would be >>> math.sqrt(36) <<< 6
:raket:

Kør kode

Så ville vores kode se ud i math.sqrt(x)stedet for sqrt(x). Dette sker, fordi når vi bruger import x, xoprettes et navneområde i sig selv for at undgå navnekonflikter. Du skal have adgang til hvert eneste objekt i modulet som x..

Men når vi bruger, er from x import yvi enige om at føje ytil det vigtigste globale navneområde. Så mens vi bruger dette, skal vi sørge for, at vi ikke har et objekt med samme navn i vores program.

Brug aldrig, from x import yhvis der yallerede findes et navngivet objekt

For eksempel er der i osmodulet en metode open. Men vi har endda en indbygget funktion kaldet open. Så her skal vi undgå at bruge from os import open.

Vi kan endda bruge form x import *, dette ville importere alle metoderne, klasserne i dette modul til programmets globale navneområde. Dette er en dårlig programmeringspraksis. Undgå det.

Generelt bør du undgå from x import yblot på grund af de problemer, det kan medføre i store programmer. For eksempel ved du aldrig, om en medprogrammerer måske vil oprette en ny funktion, der tilfældigvis er navnet på en af ​​de eksisterende funktioner. Du ved heller ikke, om Python vil ændre det bibliotek, som du importerer funktioner fra. Selvom disse problemer ikke eksisterer så ofte for soloprojekter, som tidligere nævnt, er det dårlig programmeringspraksis og bør undgås.