Alt om Python - Begynder til avanceret

Alt hvad du behøver at vide i en artikel

Denne artikel har til formål at skitsere alle de vigtigste punkter i Python-programmeringssprog. Mit mål er at holde informationen kort, relevant og fokusere på de vigtigste emner, som absolut kræves for at blive forstået.

Efter at have læst denne blog, vil du være i stand til at bruge ethvert Python-bibliotek eller implementere dine egne Python-pakker.

Det forventes ikke, at du har nogen forudgående programmeringskendskab, og det vil være meget hurtigt at forstå alle de krævede koncepter.

Jeg vil også fremhæve topdiskussionsspørgsmål, som folk normalt forespørger om Python-programmeringssprog.

Lad os opbygge viden gradvist, og i slutningen af ​​artiklen får du en grundig forståelse af Python.

Her er 5 interessante Python-øvelser, der hjælper med din læring:

Jeg kan varmt anbefale denne artikel, da den viser, hvordan du kan bruge din Python-viden, som jeg nu vil forklare til at opbygge en robust applikation:

Denne artikel indeholder 25 centrale emner. Lad os begynde.
Foto af Curtis MacNewton på Unsplash

1. Præsentation af Python

Hvad er Python?

  • Fortolket objektorienteret dynamisk-typet scriptingsprog på højt niveau.
  • Python-tolk læser en kodelinje ad gangen, fortolker den til maskinsprog på lavt niveau (byte-kode) og kører derefter den.
  • Som et resultat er der normalt fejl i køretid.

Hvorfor Python?

  • Python er det mest populære sprog på grund af det faktum, at det er lettere at kode og forstå det.
  • Python er objektorienteret programmeringssprog og kan bruges til at skrive funktionel kode også.
  • Det er et egnet sprog, der bygger bro mellem forretning og udviklere.
  • Efterfølgende tager det mindre tid at bringe et Python-program på markedet sammenlignet med andre sprog som f.eks. C # / Java.
  • Derudover er der et stort antal python-maskinlærings- og analytiske pakker.
  • Et stort antal samfund og bøger er tilgængelige til støtte for Python-udviklere.
  • Næsten alle typer applikationer, der spænder fra prognoseanalyse til UI, kan implementeres i Python.
  • Det er ikke nødvendigt at angive variabeltyper. Det er således hurtigere at implementere en Python-applikation.

Hvorfor ikke Python?

  • Python er langsommere end C ++, C #, Java. Dette skyldes manglen på Just In Time-optimeringsmaskiner i Python.
  • Python syntaktisk hvid-plads begrænsning gør det lidt vanskeligt at implementere for nye kodere.
  • Python tilbyder ikke avancerede statistiske funktioner, som R gør.
  • Python er ikke egnet til interaktion mellem systemer og hardware.

Hvordan fungerer Python?

Dette billede illustrerer, hvordan python kører på vores maskiner:

Nøglen her er den tolk, der er ansvarlig for at oversætte Python-sprog på højt niveau til maskinsprog på lavt niveau.

2. Variabler - Objekttyper og rækkevidde

  • Variabler gemmer oplysninger, der kan bruges i dit program, såsom at gemme brugerinput, lokale program i dit program osv.
  • Variabler har et navn, så der kan henvises til dem i koden.

Python understøtter tal, strenge, sæt, lister, tuples og ordbøger. Dette er standard datatyper.

Angiv og tildel værdi til variabel

Tildeling sætter en værdi til en variabel:

myFirstVariable = 1
mySecondVariable = 2
myFirstVariable = "Hej dig"
  • Tildeling af en værdi kaldes binding i Python.

Bemærk, hvordan jeg tildelte en heltalværdi på 1 og derefter en strengværdi af "Hej dig" til variablen myFirstVariable. Dette er muligt på grund af det faktum, at datatyperne er dynamisk indtastet i python.

Numerisk

  • Heltal, decimaler, flydere understøttes.
værdi = 1 # heltal
værdi = 1,2 # fly med et flydende punkt
  • Længder understøttes også. De har et suffiks af L f.eks. 9999999999999L

Strenge

  • Tekstuel information. Strenge er rækkefølge af bogstaver.
  • Strengværdi er lukket i anførselstegn:
name = 'farhad'
  • Strenge er uforanderlige. Når de først er oprettet, kan de ikke ændres, f.eks.
a = 'mig'
en [1] = 'y'
Det vil kaste en type fejl
  • Når strengvariabler tildeles en ny værdi og derefter internt, opretter Python et nyt objekt til at gemme værdien.

Variabler kan have lokalt eller globalt omfang.

Lokalt anvendelsesområde

  • Variabler, der er erklæret inden for en funktion, som et eksempel, kan kun eksistere inden for blokken.
  • Når blokken eksisterer, bliver variablerne også utilgængelige.
def some_funcion ():
  TestMode = Falsk
print (TestMode) <- Breaks, da variablen ikke findes uden for

I Python skaber ikke ellers og for / mens loopblokering ikke noget lokalt omfang.

for i inden for rækkevidde (1, 11):
    test_scope = "variabel inden for loop"
print (test_scope)

Produktion:

variabel indvendig for loop

Med if-else-blok

is_python_awulous = Sandt
hvis er_python_awulous:
    test_scope = "Python er fantastisk"
print (test_scope)

Produktion:

Python er fantastisk

Globalt anvendelsesområde

  • Variabler, der kan fås adgang fra enhver funktion, har et globalt omfang. De findes i rammen __main__.
  • Du kan erklære en global variabel uden for funktioner. Det er vigtigt at bemærke, at for at tildele en global variabel en ny værdi, skal du bruge det "globale" nøgleord:
TestMode = Sandt
def some_function ():
  global testmode
  TestMode = Falsk
some_function ()
print (TestMode) <- Returnerer usandt

Fjernelse af linjen “global TestMode” indstiller kun variablen til Falsk inden for funktionen some_function ().

Bemærk: Selvom jeg vil skrive mere om begrebet moduler senere, men hvis du vil dele en global variabel på tværs af et antal moduler, kan du oprette en delt modulfil, f.eks. config.py og find din variabel der. Endelig skal du importere det delte modul i dine forbrugermoduler.

Finder variabel type

  • Hvis du vil finde en variabeltype, kan du implementere:
type ( 'farhad')
-> Returnerer 

Komma i heltalvariabler

  • Komma behandles som sekvens af variabler, f.eks.
9,8,7 er tre numeriske variabler

3. Drift

  • Tillader os at udføre beregning af variabler

Numeriske operationer

  • Python understøtter basic *, /, +, -
  • Python understøtter også gulvopdeling
1 // 3 # tilbagevenden 0
1/3 # vender tilbage 0,333
  • Derudover understøtter python eksponentiering via ** -operatør:
2 ** 3 = 2 * 2 * 2 = 8
  • Python understøtter også Modulus (resten) -operatør:
7% 2 = 1

Strengeoperationer

Concat strenge:

'A' + 'B' = 'AB'

Gentag streng:

'A' * 3 gentages A tre gange: AAA

slicing:

y = 'Abc'
y [: 2] = ab
y [1:] = bc
y [: - 2] = a
y [-2:] = bc

Vende:

x = 'abc'
x = x [:: - 1]

Negativt indeks:

Hvis du vil starte fra det sidste tegn, skal du bruge negativt indeks.

y = 'abc'
print (y [: - 1]) # vender tilbage c

Bruges også til at fjerne eventuelle nye linevogne / mellemrum.

Find indeks

name = 'farhad'
indeks = navn.find ('r')
# tilbagevenden 2
name = 'farhad'
indeks = navn.find ('a', 2) # finder indeks for andet a
# tilbagevenden 4

Brug til Regex:

  • split (): opdeler en streng til en liste via regex
  • sub (): erstatter den matchede streng via regex
  • subn (): erstatter den matchede streng via regex og returnerer antallet af udskiftninger

Støbning

  • str (x): Til streng
  • int (x): Til heltal
  • float (x): At flyde

Indstil operationer

  • Sæt er en uordnet dataindsamling. Vi kan definere en sæt variabel som:
a = {1,2,3}

Kryds sæt

  • At få det, der er almindeligt i to sæt
a = {1,2,3}
b = {3,4,5}
c = a. vinterektion (b)

Forskel i sæt

  • Sådan henter du forskellen mellem to sæt:
a = {1,2,3}
b = {3,4,5}
c = a. forskel (b)

Union Of Collections

  • For at få et tydeligt kombineret sæt med to sæt
a = {1,2,3}
b = {3,4,5}
c = a.union (b)

Ternary Operator

  • Bruges til at skrive betingede udsagn på en enkelt linje.

Syntaks:

[Hvis sandt] hvis [Udtryk] Ellers [Hvis falsk]

For eksempel:

Modtaget = Sandt, hvis x == 'Ja' ellers falsk

4. Kommentarer

Enkeltlinjekommentarer

# dette er en enkelt linjekommentar

Flere linjekommentarer

Man kan bruge:

`` Dette er en multi
linje
comment```

5. Udtryk

Udtryk kan udføre boolske operationer såsom:

  • Ligestilling: ==
  • Ikke lige:! =
  • Større:>
  • Mindre: <
  • Større eller lig> =
  • Mindre eller lig <=

6. Pickling

Konvertering af et objekt til en streng og dumping af strengen til en fil kaldes pickling. Det modsatte kaldes unpickling.

7. Funktioner

  • Funktioner er sekvens af udsagn, som du kan udføre i din kode. Hvis du ser gentagelse i din kode, skal du oprette en genanvendelig funktion og bruge den i dit program.
  • Funktioner kan også henvise til andre funktioner.
  • Funktioner eliminerer gentagelse i din kode. De gør det lettere at fejlsøge og finde problemer.
  • Endelig giver funktioner mulighed for at koden er forståelig og lettere at administrere.
  • Kort sagt, funktioner giver os mulighed for at opdele et stort program i mindre bidder.

Definer ny funktion

def my_new_function ():
  print ('dette er min nye funktion')

Opkaldsfunktion

my_new_function ()

Findning af strengens længde

Ring til funktionen len (x)

len ( 'hallo')
udskriver 5

argumenter

  • Argumenter kan føjes til en funktion for at gøre funktionerne generiske.
  • Denne øvelse er kendt som generalisering.
  • Du kan overføre variabler til en metode:
def my_new_function (my_value):
  print ('dette er min nye funktion med' + my_value)
  • Valgfrie argumenter:

Vi kan videregive valgfri argumenter ved at give en standardværdi til et argument:

def my_new_function (my_value = 'hej'):
  print (MY_VALUE)
#Ringer
my_new_function () => udskrives hej
my_new_function ('test') => udskriver test
  • * argumenter:

Hvis din funktion kan indtaste et vilkårligt antal argumenter, skal du tilføje en * foran parameternavnet:

def myfunc (* argumenter):
  returnere a
myfunc (a)
myfunc (a, b)
myfunc (a, b, c)
  • ** argumenter:

Det giver dig mulighed for at videregive forskellige antal søgeordsargumenter til en funktion.

Du kan også give ordbogsværdier som nøgleordsargumenter.

Vend tilbage

  • Funktioner kan returnere værdier som:
def my_function (input):
  retur input + 2
  • Hvis der kræves en funktion for at returnere flere værdier, er det velegnet at returnere en tuple (kommaseparerede værdier). Jeg vil forklare tuples senere:
resultA, resultB = get_result ()
get_result () kan returnere ('a', 1), som er en tuple

Lambda

  • Enkelt udtryk anonym funktion.
  • Det er en inline funktion.
my_lambda = lambda x, y, z: x - 100 + y - z
my_lambda (100, 100, 100) # returnerer 0

Syntaks:

variabel = lambda-argumenter: udtryk

Lambda-funktioner kan overføres som argumenter til andre funktioner.

dir () og hjælp ()

  • dir () - viser definerede symboler
  • help () - viser dokumentation
Foto af Noah Silliman på Unsplash

8. Moduler

Hvad er et modul?

  • Python leveres med over 200 standardmoduler.
  • Modul er en komponent, der grupperer lignende funktionalitet på din python-løsning.
  • Enhver python-kodefil kan pakkes som et modul, og derefter kan den importeres.
  • Moduler tilskynder til komponentiseret design i din løsning.
  • De giver begrebet navneområder hjælpe dig med at dele data og tjenester.
  • Moduler tilskynder til genanvendelse af kode og reducerer sammenstød med variabelnavne.

PYTHONPATH

  • Denne miljøvariabel angiver, hvor Python-tolken har brug for at navigere for at finde modulerne. PYTHONHOME er en alternativ modul-søgesti.

Sådan importeres moduler?

  • Hvis du har en fil: MyFirstPythonFile.py og den indeholder flere funktioner, variabler og objekter, kan du importere funktionaliteten til en anden klasse ved blot at gøre:
importer MyFirstPythonFile
  • Internt vil python-runtime kompilere modulets fil til bytes og derefter køre modulkoden.
  • Hvis du vil importere alt i et modul, kan du gøre:
importer min_module
  • Hvis dit modul indeholder en funktion eller et objekt ved navn my_object, skal du gøre:
print (my_module.my_object)

Bemærk: Hvis du ikke ønsker, at tolken skal udføre modulet, når det er indlæst, kan du kontrollere, om __name__ == '__main__'

2. Fra

  • Hvis du kun vil have adgang til et objekt eller dele af et modul fra et modul, kan du implementere:
fra my_module import my_object
  • Dette giver dig adgang til dit objekt uden at henvise til dit modul:
print (my_object)
  • Vi kan også gøre fra * for at importere alle objekter
fra my_module import *

Bemærk: Moduler importeres kun ved den første import.

Hvis du vil bruge C-modul, kan du bruge PyImport_ImportModule

Brug import over fra, hvis vi vil bruge det samme navn, der er defineret i to forskellige moduler.

9. Pakker

  • Pakken er et bibliotek med moduler.
  • Hvis din Python-løsning tilbyder et stort sæt af funktionaliteter, der er grupperet i modulfiler, kan du oprette en pakke ud af dine moduler for bedre at distribuere og styre dine moduler.
  • Pakker gør det muligt for os at organisere vores moduler bedre, som hjælper os med at løse problemer og finde moduler lettere.
  • Tredjepartspakker kan importeres til din kode, såsom pandaer / sci-kit-læring og tensor-flow for at nævne nogle få.
  • En pakke kan indeholde et stort antal moduler.
  • Hvis vores løsning tilbyder lignende funktioner, kan vi gruppere modulerne i en pakke:
fra packageroot.packagefolder.mod import my_object
  • I eksemplet ovenfor er packageroot rodmappen. packagefolder er undermappen under packageroot. my_module er en modul Python-fil i mappen packagefolder.
  • Derudover kan navnet på mappen fungere som navnefelt f.eks.
fra data_service.database_data_service.microsoft_sql.mod

Bemærk: Sørg for, at hvert bibliotek i din pakkeimport indeholder en fil __init__.py.

Du er velkommen til at lade filerne være tomme. Da __init__.py filer importeres, før modulerne importeres, kan du tilføje brugerdefineret logik, f.eks. Statustjekchecks for starttjenester eller for at åbne databaseforbindelser osv.

PIP

  • PIP er en Python-pakkeadministrator.
  • Brug PIP til at downloade pakker:
pip installere pakkenavn

10. Betingelser

  • Sådan skriver du ellers:
hvis a == b:
  tryk 'a er b'
elif a  b:
  tryk 'a er større end b'
andet:
  tryk 'a er anderledes'

Bemærk, hvordan kolon og indrykk bruges til at udtrykke den betingede logik.

Kontrol af typer

hvis ikke er instinstance (input, int):
  tryk 'Forventet int'
  retur Ingen

Du kan også tilføje betinget logik i den anden del. Dette er kendt som indlejret tilstand.

# lad os skrive betingelser inden for andet sted
andet:
 hvis a == 2:
    tryk 'inden for hvis andet'
 andet:
     tryk 'inden for andet ellers'

11. Sløjfer

Mens

  • Angiv en betingelse, og kør loopen, indtil betingelsen er opfyldt:
mens (input <0):
 do_something (input)
 input = input-1

Til

  • Slynge i et antal gange
for i inden for intervallet (0,10)
  • Slyng over genstande eller tegn i en streng
til brev i 'hej'
  trykt brev

One-Liner For

Syntaks:

[Variabel] AggregateFunction ([Value] for [item] in [collection])

Hvilket giver

  • Lad os antage, at din liste indeholder en billion billioner, og du er forpligtet til at tælle antallet af lige numre fra listen. Det er ikke optimalt at indlæse hele listen i hukommelsen. Du kan i stedet give hvert emne fra listen.
  • xrange i stedet for rækkevidde kan bruges til at itereere over emnerne.

Kombiner med med hvis

  • Lad os gøre en simpel øvelse for at finde ud af, om et tegn er i to ord
name = 'onename'
anothername = 'onenameonename'
for tegn på navn:
  hvis tegn i et andet navn
     udskriv tegn

Pause

  • Hvis du vil afslutte løkken
for i inden for intervallet (0,10):
 hvis (i == 5):
   pause
mens sandt:
  x = get_value ()
  hvis (x == 1):
     pause
  • Lad os skrive Fibonacci for loop:
def fib (input):
 if (input <= 1):
   tilbagevenden (str (input))
 andet:
   først = 0
   sekund = 1
   tæller = 0
   for optælling inden for rækkevidde (input):
     resultat = første + sekund
     print (første)
     først = sekund
     sekund = resultat
     count = count + 1
#print-erklæring udsender den korrekte fibværdi
fib (7)

12. Rekursion

  • En funktion, der kalder sig selv, kaldes rekursion.

Lad os implementere en faktorial rekursiv funktion:

Regler:

  • 0! = 1 # Fabrik af 0 er 1
  • n! = n (n-1)! #Faktorium for n er n * faktorial for n-1

Steps:

  • Opret en funktion kaldet factorial med input n
  • Hvis n = 0 returnerer 1 ellers skal du n x factorial af n-1
def factorial (n):
  hvis n == 0:
    retur 1
  andet:
    retur n * factorial (n-1)

Et andet eksempel: Lad os skrive Fibonacci rekursiv funktion:

Regler:

  • De første to cifre er 0 og 1
  • Hvil tilføj de to sidste cifre

0, 1, 1, 2, 3, 5, 8 ...

Steps:

  • Opret en funktion kaldet Fibre, der indtaster et input n
  • Opret to variabler først og andet, og tildel dem med værdierne 0 og 1
  • hvis n = 0 returnerer 0, hvis n = 1 returnerer 1 andet returnerer (n-1) + (n-2)
def decharge (n):
 hvis (n <= 1):
   retur n
 andet:
   tilbagebetaling (n-1) + kørselsvejledning (n-2)
print (fibonacci (6))

Det er vigtigt at have en udgangskontrol ellers ender funktionen i uendelig sløjfe.

13. Rammer og opkaldsstabel

  • Python-kode indlæses i rammer, der er placeret i en stak.
  • Funktioner indlæses i en ramme sammen med parametre og variabler.
  • Derefter indlæses rammer i en stak i den rigtige rækkefølge af udførelsen.
  • Stak skitserer udførelsen af ​​funktioner. Variabler, der er erklæret uden for funktioner, gemmes i __main__
  • Stacks udfører den sidste ramme først.

Du kan bruge traceback til at finde listen over funktioner, hvis der opstår en fejl.

14. Samlinger

Lister

  • Lister er datastrukturer, der kan indeholde en sekvens af værdier for alle datatyper. De er mutable (kan opdateres).
  • Lister indekseres af heltal.
  • For at oprette en liste skal du bruge firkantede parenteser:
my_list = ['A', 'B']
  • For at tilføje / opdatere / slette et element skal du bruge indeks:
my_list.append ('C') # tilføjelser til slut
my_list [1] = 'D' #update
my_list.pop (1) # fjerner
eller
del my_list [1: 2] # fjerner
my_list.extend (another_list) # tilføjer anden liste i slutningen
  • Tilføjelse, gentagelse og skiver kan anvendes på lister (ligesom strenge).
  • Liste understøtter også sortering:
my_list.sort ()

tupler

  • Tuples er som lister i den forstand, at de kan gemme en række objekter. Objekterne kan igen være af enhver art.
  • Tuples er hurtigere end lister.
  • Disse samlinger indekseres af heltal.
  • Tuples er uforanderlige (kan ikke opdateres)
my_tuple = tuple ()
eller
my_tuple = 'f', 'm'
eller
my_tuple = ('f', 'm')

Bemærk: Hvis en tuple indeholder en liste over elementer, kan vi ændre listen. Også hvis du tildeler en værdi til et objekt og gemmer objektet på en liste og derefter ændrer objektet, opdateres objektet på listen.

Ordbøger

  • Ordbog er en af ​​de vigtigste datastrukturer i programmeringsverdenen. Det gemmer nøgle / værdiparobjekter.
  • Det har mange fordele f.eks. optimeret dataindhentningsfunktionalitet.
my_diction = dict ()
my_diction ['my_key'] = 1
my_diction ['another_key'] = 2
  • Du kan også oprette en ordbog som:
my_diktion = {'my_key': 1, 'another_key': 2}
  • Udskriv ordbogens indhold
til nøgleordbog:
  udskrivningsnøgle, ordbog [nøgle]
  • Værdier for en ordbog kan være af enhver type, herunder strenge, numeriske, boolske, lister eller endda ordbøger.
dictionary.items () # returnerer varer
#check om der findes en nøgle i en ordbog
if ('nogle nøgler' i ordbogen):
  #gør noget

Bemærk: Hvis du vil udføre vektoriserede / matrix-operationer på en liste, skal du bruge NumPy Python-pakken

15. Kompilering og sammenkobling

  • Disse funktioner kan bruges til at bruge en fil, der er skrevet på et andet sprog, f.eks. C eller C ++ osv.
  • Når koden er skrevet i en fil, kan filen placeres i biblioteket Moduler.
  • Det er vigtigt at tilføje en linje i filen Setup.local for at sikre, at den nyoprettede fil kan indlæses.

Samling:

  • Tillader sammenstilling af nye udvidelser uden fejl

Sammenkædning:

  • Når udvidelserne er samlet, kan de knyttes sammen.

16. Iteratorer

iteratorer

  • Tillad gennemgang gennem en samling
  • Alle iteratorer indeholder __iter __ () og __næste __ () -funktioner
  • Kør bare iter (x) på lister, ordbøger, strenge eller sæt.
  • Derfor kan vi udføre næste (iter), hvor iter = iter (liste) som et eksempel.
  • Iteratorer er nyttige, hvis vi har et stort antal elementer i en samling, og vi ikke agter at indlæse alle filerne i hukommelsen på én gang.
  • Der er fælles iteratorer, der gør det muligt for udviklere at implementere funktionelt programmeringssprogsparadigme:

Filter

  • Filtrer værdier baseret på en betingelse

Kort

  • Anvender en beregning af hver værdi af en samling. Det kortlægger en værdi til en anden værdi, f.eks. Konverter tekst til heltal

Reducere

  • Reducerer en samling af værdier til en enkelt værdi (eller en mindre samling) f.eks. summen af ​​en samling. Det kan være iterativ karakter.

Zip

  • Tag flere samlinger og returnerer en ny samling.
  • Den nye samling indeholder elementer, hvor hvert element indeholder et element fra hver input-samling.
  • Det giver os mulighed for at krydse flere samlinger på samme tid
name = 'farhad'
suffiks = [1,2,3,4,5,6]
zip (navn, suffiks)
-> returnerer (f, 1), (a, 2), (r, 3), (h, 4), (a, 5), (d, 6)

17. Objektorienteret design - klasser

  • Python giver os mulighed for at oprette vores tilpassede typer. Disse brugerdefinerede typer kaldes klasser. Klasserne kan have tilpassede egenskaber / attributter og funktioner.
  • Objektorienteret design giver programmerere mulighed for at definere deres forretningsmodel som objekter med deres krævede egenskaber og funktioner.
  • En egenskab kan også henvise til et andet objekt.
  • Python-klasser kan referere til andre klasser.
  • Python understøtter indkapsling - forekomstfunktioner og variabler.
  • Python understøtter arv.
klasse MyClass:
  def MyClassFunction (self): #self = henvisning til objektet
    retur 5
# Opret ny forekomst af MyClass, og kald derefter funktionen
m = MyClass ()
return_value = m.MyClassFunction ()
  • Et eksempel på en klasse er kendt som et objekt. Objekterne er mutable, og deres egenskaber kan opdateres, når objekterne er oprettet.

Bemærk: Hvis en tuple (uforanderlig samling) indeholder en liste (mutérbar samling) af genstande, kan vi ændre listen. Også hvis du tildeler en værdi til et objekt og gemmer objektet på en liste og derefter ændrer objektet, opdateres objektet på listen.

__i det__

  • __init__-funktion er til stede i alle klasser. Det udføres, når vi er forpligtet til at instantisere et objekt af en klasse. __init__-funktionen kan tage de egenskaber, som vi ønsker at indstille:
klasse MyClass:
   def __init __ (self, first_property):
       self.first_property = first_property
   def MyClassFunction (self):
      return self.first_property
# Opret en forekomst
m = MyClass (123)
r = m.MyClassFunction ()
r vil være 123

Bemærk: selvparameter vil indeholde referencen til objektet, også kaldet "dette" i andre programmeringssprog som C #

__str__

  • Returnerer den strenge version af et objekt, når vi kalder “print”:
m = MyClass (123)
udskriv m #Calls __str__
  • Derfor udføres __str__, når vi udfører udskrivning.

__cmp__

  • Brug forekomstfunktionen __cmp__, hvis vi ønsker at give brugerdefineret logik til sammenligning af to objekter i den samme instans.
  • Det returnerer 1 (større), -1 (lavere) og 0 (lige) for at indikere ligheden mellem to objekter.
  • Tænk på __cmp__ som Equals () -metoden på andet programmeringssprog.

overbelastning

  • Metoder til et objekt kan overbelastes ved at give flere argumenter som et eksempel.
  • Vi kan også overbelaste en operatør som + ved at implementere vores egen implementering for __add__

Lavt mod dyb kopi af objekter

  • Ækvivalente objekter - Indeholder samme værdier
  • Identiske objekter - Henvisning til det samme objekt - samme adresse i hukommelsen
  • Hvis du vil kopiere et helt objekt, kan du bruge kopimodulet
importkopi
m = MyClass (123)
mm = kopi.kopi (m)
  • Dette vil resultere i lav kopi, da referencepunkterne for egenskaberne kopieres.
  • Derfor, hvis en af ​​egenskaberne for objektet er en objektreference, vil det ganske enkelt pege på den samme referenceadresse som det originale objekt.
  • Som et resultat vil opdatering af egenskaben i kildeobjektet resultere i opdatering af egenskaben i målobjektet.
  • Derfor kopier referencepunkter til lave kopier.
  • Heldigvis kan vi bruge dybkopi:
importkopi
m = MyClass (123)
mm = copy.deepopopy (m)
  • Hvis MyClass indeholder en egenskab, der refererer til MyOtherClass-objekt, kopieres indholdet af egenskaben i det nyoprettede objekt via deepcopy.
  • Derfor giver dybkopi en ny henvisning til objektet.

18. Objektorienteret design - Arv

  • Python understøtter arv af genstande. Som et resultat kan et objekt arve funktioner og egenskaber for dets overordnede.
  • En arvet klasse kan indeholde forskellige logikker i dens funktioner.
  • Hvis du har en klasse: ParentClass og to underklasser: SubClass1, SubClass2, kan du bruge Python til at oprette klasserne som:
klasse ParentClass:
 def my_function (self):
   tryk 'Jeg er her'
klasse underklasse1 (forældreklasse):
klasse SubClass2 (ParentClass):
  • Derfor vil begge underklasser indeholde funktionen my_function ().
  • Arv kan tilskynde til genanvendelse af kode og vedligeholdelse.

Bemærk: Python understøtter flere arv i modsætning til C #

  • Brug Pythons abc-modul for at sikre, at alle underklasser indeholder de krævede funktioner i den abstrakte baseklasse.

Multi-Inheritance:

klasse A (B, C): #A redskaber B og C
  • Hvis du vil kalde funktionen til forældreklasse, kan du gøre:
super (A, self) .function_name ()

19. Garbage Collection - Memory Management

  • Alle objekterne i Python er gemt i en bunkeplads. Dette rum er tilgængeligt for Python-tolken.
  • Python har en indbygget affaldsopsamlingsmekanisme.
  • Det betyder, at Python automatisk kan tildele og affordele hukommelsen til dit program, f.eks. I C ++ eller C #.
  • Dets ansvar er at rydde pladsen i hukommelsen for de objekter, der ikke henvises til / bruges i programmet.

Da flere objekter kan dele hukommelsesreferencer, anvender python to mekanismer:

  1. Henvisningstælling: Tæl antallet af elementer, der refereres til et objekt, omfordel et objekt, hvis antallet er 0.
  2. Den anden mekanisme tager sig af cirkulære referencer, også kendt som cykliske referencer, ved kun at tildele objekterne, hvor antallet af tildelinger - fordeling er større end tærsklen.
  • Nye objekter oprettes i Generation 0 i python. De kan inspiceres af:
import gc
collection_objects = gc.collect ()
  • Manuel opsamling af affald kan udføres på rettidig eller begivenhedsbaseret mekanisme.

20. I / O

Fra tastatur

  • Brug funktionen raw_input ()
user_says = raw_input ()
print (user_says)

Filer

  • Brug en med / som sætning til at åbne og læse en fil. Det svarer til brugen af ​​sætning i C #.
  • med erklæring kan tage sig af lukning af forbindelser og andre oprydningsaktiviteter.

Åbn filer

med åben (filsti, 'r') som my_file:
  til linje i my_fil
#File er lukket på grund af med / som

Bemærk: readline () kan også udføres for at læse en linje i en fil.

Åbn to filer

med åben (filsti) som my_fil, åben (en anden sti) som anden fil:
  for (linienummer, (linje1, linje2)) i enumerate (zip (my_file, second_file)):

Skrivning af filer

med åben (filsti, 'w') som my_file:
  my_file.write ( 'test')

Bemærk: Brug os og shutil-moduler til filer.

Bemærk: rw - læse-skrivningstilstand og a - tilføjetilstand.

SQL

Åbn en forbindelse

importer MySQLdb
database = MySQLdb.connect ("vært" = "server", "databasebruger" = "mit brugernavn", "adgangskode" = "min adgangskode", "database-navn" = "min database")
cursor = database.cursor ()

Udfør en SQL-sætning

cursor.fetch ("Vælg * Fra MyTable")
database.close ()

Webtjenester

Sådan spørger du en hviletjeneste

importanmodninger
url = 'http://myblog.com'
respons = forespørgsler.get (url) .text

At Serialise og Deserialise JSON

Deserialise:

import json
my_json = {"A": "1", "B": "2"}
json_object = json.loads (my_json)
value_of_B = json_object ["B"]

deserialisere:

import json
a = "1"
json_a = json.dumps (a)

21. Fejlhåndtering

Hæv undtagelser

  • Hvis du vil rejse undtagelser, skal du bruge søgeordet hæve:
prøve:
  hæv TypError
undtagen:
  print ( 'undtagelse')

Fangst undtagelser

  • For at fange undtagelser kan du gøre:
prøve:
   gør noget()
undtagen:
   print ( 'undtagelse')
  • Hvis du vil fange specifikke undtagelser, kan du gøre:
prøve:
   gør noget()
undtagen TypeError:
   print ( 'undtagelse')
  • Hvis du vil bruge try / catch / endelig, kan du gøre:
prøve:
   gør noget()
undtagen TypeError:
   print ( 'undtagelse')
endelig:
   close_connections ()
  • endelig en del af koden udløses uanset, du kan endelig bruge til at lukke forbindelserne til database / filer osv.

Prøv / Undtagen / Else

prøve:
  gør noget
undtagen IfTryRaisedException1:
  gør noget andet
undtagen (IfTryRaisedException2, IfTryRaisedException3)
  Hvis undtagelse 2 eller 3 hæves, skal du gøre noget
andet:
  ingen undtagelser blev rejst
  • Vi kan også tildele undtagelse til en variabel ved at gøre:
prøve:
  gør noget
undtagen undtagelse1 som my_exception:
  gør noget ved min_exception
  • Hvis du vil definere brugerdefinerede begrænsninger, skal du bruge assert:
hævde , 'fejl ved at kaste'

Bemærk: Python understøtter arv i undtagelser

Du kan oprette din egen undtagelsesklasse ved at:

klasse MyException (Undtagelse): bestået

22. Flertråd og GIL

  • GIL er global tolkelås.
  • Det sikrer, at trådene kan udføres på et hvilket som helst tidspunkt og tillader CPU-cyklusser at vælge den krævede tråd, der skal udføres.
  • GIL sendes til de tråde, der i øjeblikket udføres.
  • Python understøtter multi-threading.

Bemærk: GIL tilføjer udgifter til udførelsen. Sørg derfor for, at du vil køre flere tråde.

23. Dekoratører

  • Dekoratører kan tilføje funktionalitet til koden. Det er i det væsentlige funktioner, der kalder andre objekter / funktioner. De er konverterbare funktioner - derfor returnerer de objektet, der skal kaldes senere, når den dekorerede funktion påberåbes.
  • Tænk på dekorationer, der muliggør aspektorienteret programmering
  • Vi kan indpakke en klasse / funktion og derefter udføres en specifik kode, når som helst funktionen kaldes.
  • Vi kan implementere generisk logik til at logge, tjekke for sikkerhedskontrol osv. Og derefter attribut metoden med @property-tagget.

24. Enhedstest i Python

  • Der er et antal enhedsprøvning og spottende biblioteker tilgængelige i Python.
  • Et eksempel er at bruge unestest:

1. Antag, at din funktion ganske enkelt reducerer et input med 1

def my_function (input):
  returindgang - 1

2. Du kan enhedstest det ved:

import unestest
klasse TestClass (unittest.TestCase):
 def my_test (self):
    self.assertEqual (my_function (1), 0)) #checking 1 bliver 0

Vi kan også bruge doctest til at teste kode skrevet i docstrings.

25. Top Python-diskussionsspørgsmål

Hvorfor skal jeg bruge Python?

  • Enkelt at kode og lære
  • Objektorienteret programmeringssprog
  • Fantastiske Analytics- og ML-pakker
  • Hurtigere at udvikle og bringe min løsning på markedet
  • Tilbyder indbygget hukommelsesstyringsfaciliteter
  • Kæmpe community support og tilgængelige applikationer
  • Ingen grund til at samle, da det er et fortolket sprog
  • Dynamisk indtastet - ikke nødvendigt at erklære variabler

Hvordan får jeg Python til at køre hurtigt?

  • Python er et sprog på højt niveau og er ikke egnet til at få adgang til programmer eller hardware på systemniveau.
  • Derudover er det ikke egnet til applikationer på tværs af platforme.
  • Det faktum, at Python er et dynamisk typet tolket sprog, gør det langsommere at blive optimeret og køre sammenlignet med sprogene på lavt niveau.
  • Implementere C-sprogbaserede udvidelser.
  • Opret multiprocesser ved hjælp af Spark eller Hadoop
  • Brug Cython, Numba og PyPy for at fremskynde din Python-kode eller skriv den i C og udsæt den i Python som NumPy

Hvilke IDE'er bruger folk?

  • Spyder, PyCharm. Derudover bruges forskellige notebooks f.eks. Jupyter

Hvad er de bedste Python-rammer og -pakker?

  • Der er et stort antal brugte pakker:

PyUnit (enhedstestning), PyDoc (dokumentation), SciPy (algebera og numerisk), Pandas (datastyring), Sci-Kit lære (ML og datavidenskab), Tensorflow (AI), Numpy (matrix og numerisk), BeautifulSoap (web scrapping af sider), kolbe (mikroframework), Pyramid (enterprise applikationer), Django (UI MVVM), urllib (skrapning af websider), Tkinter (GUI), mock (mocking bibliotek), PyChecker (bug detector), Pylint (modulkodeanalyse) )

Sådan hostes Python-pakker?

  1. For Unix: Gør script-filtilstand eksekverbar og første linje skal være:
# (#! / min konto / lokal / bin / python)

2. Du kan bruge kommandolinjeværktøjet og udføre det

3. Brug PyPRI- eller PyPI-server

Kan Python og R kombineres?

  • Et stort antal rige statistiske biblioteker er skrevet i R
  • Man kan udføre R-kode i Python ved at bruge Rpy2-python-pakken eller ved at bruge en bærbar notebook eller IR-kerne i Juputer.

Er der en måde at fange fejl, før du kører Python?

  • Vi kan bruge PyChecker og PyLink til at fange fejl, før koden køres.
Foto af Curtis MacNewton på Unsplash

Resumé

Denne artikel skitserede de vigtigste 25 koncepter af Python på en kort, relevant og fokuseret måde. Jeg håber virkelig, at det har hjulpet nogen med at få bedre forståelse af Python.

Jeg tror, ​​jeg har koncentreret mig om de must-know-emner, der absolut kræves for at blive forstået. Denne viden er tilstrækkelig til at skrive dine egne python-pakker i fremtiden eller bruge eksisterende Python-pakker.

Hvil, bare praksis så meget som muligt, og du kan implementere dit eget bibliotek i Python, fordi denne artikel indeholder al den viden, du har brug for.

Her er 5 interessante Python-øvelser for at teste din viden:

Jeg kan varmt anbefale denne artikel, da den viser, hvordan du kan bruge din Python-viden til at opbygge en robust applikation:

Håber det hjælper.