Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Komandat e Python me shpjegime. Bazat e Python në një vështrim

(Përkthim)

Në faqen Poromenos Stuff u publikua një artikull në të cilin në një formë të përmbledhur flitet për bazat e gjuhës Python. Unë ju ofroj një përkthim të këtij artikulli. Përkthimi nuk është fjalë për fjalë. Unë u përpoqa të shpjegoj më hollësisht disa pika që mund të mos jenë të qarta.

Nëse po planifikoni të mësoni gjuhën Python, por nuk mund të gjeni një udhëzues të përshtatshëm, atëherë ky artikull do të jetë shumë i dobishëm për ju! Në një kohë të shkurtër do të mund të njiheni me bazat e gjuhës Python. Megjithëse ky artikull shpesh mbështetet në faktin se ju tashmë keni përvojë programimi, shpresoj se edhe fillestarët do ta gjejnë këtë material të dobishëm. Lexoni me kujdes çdo paragraf. Për shkak të kondensimit të materialit, disa tema diskutohen sipërfaqësisht, por përmbajnë të gjithë materialin e nevojshëm.

Vetitë themelore

Python nuk kërkon deklarim të qartë të variablave, dhe është një gjuhë e orientuar drejt objektit (variabla var nuk është ekuivalente me Var ose VAR - ato janë tre variabla të ndryshme).

Sintaksë

Së pari, vlen të përmendet një veçori interesante e Python. Në vend të kësaj, ai nuk përmban kllapa operatori (fillojnë..mbarojnë me pascal ose (..) në C). blloqet janë të dhëmbëzuara: hapësira ose skeda, dhe futja e një blloku deklaratash bëhet me dy pika. Komentet me një rresht fillojnë me një shenjë paund "#", komentet me shumë rreshta fillojnë dhe mbarojnë me tre thonjëza të dyfishta """.

Për t'i caktuar një vlerë një ndryshoreje, përdoret shenja "=" dhe për krahasim, përdoret "==". Për të rritur vlerën e një ndryshoreje ose për të shtuar në një varg, përdorni operatorin “+=” dhe “-=” për ta ulur atë. Të gjitha këto operacione mund të ndërveprojnë me shumicën e llojeve, duke përfshirë vargjet. Për shembull

>>> myvar = 3

>>> myvar += 2

>>> myvar -= 1

"""Ky është një koment me shumë rreshta

Vargjet e mbyllura në tre thonjëza të dyfishta nuk merren parasysh"""

>>> mystring = "Përshëndetje"

>>> mystring += "botë."

>>> printoni mystring

Përshendetje Botë.

# Rreshti tjetër ndryshon

Vlerat e variablave ndërrohen. (Vetëm një rresht!)

>>> myvar, mystring = mystring, myvar

Strukturat e të dhënave

Python përmban struktura të dhënash si p.sh lista, tuple dhe fjalorë). Listat janë të ngjashme me grupet njëdimensionale (por mund të përdorni një listë që përmban lista - një grup shumëdimensional), tuplet janë lista të pandryshueshme, fjalorët janë gjithashtu lista, por indekset mund të jenë të çdo lloji, jo vetëm numerike. "Arrays" në Python mund të përmbajnë të dhëna të çdo lloji, domethënë, një grup mund të përmbajë numerikë, vargje dhe lloje të tjera të dhënash. Vargjet fillojnë me indeksin 0 dhe elementi i fundit mund të aksesohet në indeksin -1. Mund t'u caktoni funksione variablave dhe t'i përdorni ato në përputhje me rrethanat.

>>> mostër = , ("a", "tuple")] #Lista përbëhet nga një numër i plotë, një listë tjetër dhe një tuple

>>> mylist = ["Artikulli i listës 1", 2, 3.14] #Kjo listë përmban një varg, një numër të plotë dhe një fraksion

>>> mylist = "Përsëri artikullin 1 të listës" #Ndrysho elementin e parë (zero) të listës ime të fletës

>>> mylist[-1] = 3.14 #Ndrysho elementin e fundit të fletës

>>> mydict = ("Key 1": "Vlera 1", 2: 3, "pi": 3.14) #Krijoni një fjalor me indekse numerike dhe të plotë

>>> mydict["pi"] = 3.15 #Ndrysho elementin e fjalorit nën indeksin "pi".

>>> mytuple = (1, 2, 3) #Specify a tuple

>>> myfunction = len #Python ju lejon të deklaroni sinonime funksioni në këtë mënyrë

>>> printoni funksionin tim (lista ime)

Ju mund të përdorni një pjesë të një grupi duke specifikuar indeksin e parë dhe të fundit të ndarë me dy pika ":". Në këtë rast, ju do të merrni një pjesë të grupit, nga indeksi i parë në të dytin, jo gjithëpërfshirës. Nëse elementi i parë nuk është i specifikuar, atëherë numërimi fillon nga fillimi i grupit, dhe nëse elementi i fundit nuk specifikohet, atëherë vargu lexohet deri në elementin e fundit. Vlerat negative përcaktojnë pozicionin e elementit nga fundi. Për shembull:

>>> mylist = ["Artikulli i listës 1", 2, 3.14]

>>> print mylist[:] #Lexohen të gjithë elementët e grupit

["Artikulli i listës 1", 2, 3.14000000000000001]

>>> print mylist #Lexohen elementet zero dhe të parë të grupit.

["Artikulli 1 i listës", 2]

>>> print mylist[-3:-1] #Elementet nga zero (-3) në sekondën (-1) lexohen (jo përfshirëse)

["Artikulli 1 i listës", 2]

>>> print mylist #Elements lexohen nga e para tek e fundit

Vargjet

Vargjet në Python të ndara me thonjëza të dyfishta """ ose thonjëza të vetme """. Thomat e dyfishta mund të përmbajnë thonjëza të vetme, ose anasjelltas. Për shembull, rreshti "Ai tha përshëndetje!" do të shfaqet si "Ai tha përshëndetje!". Nëse ju duhet të përdorni një varg me disa rreshta, atëherë kjo rresht duhet të fillojë dhe të përfundojë me tre thonjëza të dyfishta """. Mund të zëvendësoni elementë nga një tufë ose fjalor në shabllonin e vargut. Shenja e përqindjes "%" midis vargut dhe tuple zëvendëson karakteret në vargun "%s" në një element tuple. Fjalorët ju lejojnë të futni një element në një indeks të caktuar në një varg. Për ta bërë këtë, përdorni konstruksionin "%(index)s" në varg. Në këtë rast, në vend të "%(index)s" vlera e fjalorit në indeksin e dhënë do të zëvendësohet me indeksin.

>>>printo "Emri: %s\nNumri: %s\nString: %s" % (myclass.name, 3, 3 * "-")

Emri: Poromenos

Numri: 3

Vargu: ---

strString = """Ky tekst ndodhet

në disa rreshta"""

>>> printoni "Kjo %(folje)s është %(emër)s." %("emër": "provë", "folje": "është")

Ky eshte nje test.

Operatorët

Deklaratat while, if dhe për përbëjnë operatorët e lëvizjes. Nuk ka asnjë të barabartë me një deklaratë të zgjedhur, kështu që do të duhet të mjaftoheni me nëse . Deklarata for bën një krahasim variabël dhe listë. Për të marrë një listë me shifra deri në një numër - përdorni funksionin e diapazonit ( ). Këtu është një shembull i përdorimit të operatorëve

rangelist = varg (10) #Merr një listë me dhjetë shifra (nga 0 në 9)

>>> printoni listën e diapazonit

për numrin në listën e diapazonit: #Përderisa numri i ndryshores (i cili rritet me një çdo herë) është në listë...

# Kontrolloni nëse ndryshorja është përfshirë

# numra në një tufë numrash (3, 4, 7, 9)

Nëse numri në (3, 4, 7, 9): #Nëse numri është në tuple (3, 4, 7, 9)...

# Operacioni "pushim" siguron

# dil nga cikli në çdo kohë

Pushim

Tjetër:

# "vazhdim" kryen "lëvizje"

# lak. Kjo nuk kërkohet këtu, pasi pas këtij operacioni

# në çdo rast, programi kthehet në përpunimin e ciklit

Vazhdoni

tjetër:

# "tjetër" është opsionale. Kushti është i plotësuar

# nëse cikli nuk ndërpritet me "break".

Kaloni # Mos bëni asgjë

nëse lista e diapazonit == 2:

Printo "Artikulli i dytë (listat janë të bazuara në 0) është 2"

elif rangelist == 3:

Printo "Artikulli i dytë (listat janë të bazuara në 0) është 3"

tjetër:

Shtyp "Nuk e di"

ndërsa lista e diapazonit == 1:

Kaloni

Funksione

Për të deklaruar një funksion, përdorni fjala kyçe "def". Argumentet e funksionit jepen në kllapa pas emrit të funksionit. Ju mund të specifikoni argumente opsionale, duke u dhënë atyre një vlerë të paracaktuar. Funksionet mund të kthejnë tuple, në këtë rast duhet të shkruani vlerat e kthimit të ndara me presje. Fjala kyçe "lambda" përdoret për të deklaruar funksionet elementare.

# arg2 dhe arg3 janë argumente opsionale, merrni vlerën e deklaruar si parazgjedhje,

# nëse nuk u jepni atyre një vlerë të ndryshme kur thërrisni funksionin.

def myfunction(arg1, arg2 = 100, arg3 = "test"):

Ktheni arg3, arg2, arg1

#Funksioni thirret me vlerën e argumentit të parë - "Argumenti 1", i dyti - si parazgjedhje dhe i treti - "Argumenti i emërtuar".

>>>ret1, ret2, ret3 = myfunction("Argumenti 1", arg3 = "Argumenti i emërtuar")

# ret1, ret2 dhe ret3 marrin respektivisht vlerat "Argumenti i emërtuar", 100, "Argumenti 1"

>>> printoni ret1, ret2, ret3

Argumenti i emërtuar 100 Argumenti 1

# Më poshtë është ekuivalente me def f(x): ktheni x + 1

funksionvar = lambda x: x + 1

>>> funksioni i printimit (1)

Klasat

Gjuha Python është e kufizuar në trashëgimi të shumëfishtë në klasa. Variablat e brendshëm dhe metodat e brendshme të klasës fillojnë me dy nënviza "__" (për shembull "__myprivatevar"). Ne gjithashtu mund t'i caktojmë një vlerë një ndryshoreje të klasës nga jashtë. Shembull:

klasa Myclass:

E zakonshme = 10

defini __fillim__(vetë):

Vetë.myvariabla = 3

Definimi i funksionit tim (vetja, arg1, arg2):

Kthehu vetë.myvariable

# Këtu kemi deklaruar klasën Myclass. Funksioni __init__ thirret automatikisht kur klasat inicializohen.

>>> classinstance = Myclass() # Ne kemi inicializuar klasën dhe myvariable ka vlerën 3 siç thuhet në metodën e inicializimit

>>> classinstance.myfunction(1, 2) #Metoda myfunction e klasës Myclass kthen vlerën e ndryshores myvariable

# Ndryshorja e përbashkët deklarohet në të gjitha klasat

>>> classesinstance2 = Myclass()

>>> classesinstance.common

>>> classinstance2.common

# Pra, nëse ndryshojmë vlerën e tij në klasën Myclass, ajo do të ndryshojë

# dhe vlerat e tij në objektet e inicializuara nga klasa Myclass

>>> Myclass.common = 30

>>> classesinstance.common

>>> classinstance2.common

# Dhe këtu ne nuk e ndryshojmë variablin e klasës. Në vend të kësaj

# e deklarojmë në një objekt dhe i caktojmë një vlerë të re

>>> classinstance.common = 10

>>> classesinstance.common

>>> classinstance2.common

>>> Myclass.common = 50

# Tani ndryshimi i variablës së klasës nuk do të ndikojë

# objekte të ndryshueshme të kësaj klase

>>> classesinstance.common

>>> classinstance2.common

# Klasa e mëposhtme është një pasardhëse e klasës Myclass

# duke trashëguar vetitë dhe metodat e saj, kush mund të klasës

# trashëgojnë nga disa klasa, në këtë rast hyrja

# si kjo: klasa Klasa tjetër (Myclass1, Myclass2, MyclassN)

klasa Klasa tjetër (Myclass):

Def __fillim__(vetë, arg1):

Vetë.myvariabla = 3

Shtypni arg1

>>> classinstance = Klasa tjetër ("përshëndetje")

Përshëndetje

>>> classesinstance.myfunction(1, 2)

# Kjo klasë nuk ka testin e vetive, por ne mundemi

# deklaroni një variabël të tillë për një objekt. Për më tepër

# kjo variabël do të jetë vetëm një anëtar i klasës.

>>> classinstance.test = 10

>>> classesinstance.test

Përjashtimet

Përjashtimet në Python kanë një strukturë try-except:

Def somefunction():

Provoni:

# Pjesëtimi me zero shkakton një gabim

10 / 0

Përveç ZeroDivisionError:

# Por programi nuk "Kryen një operacion të paligjshëm"

# Dhe trajton bllokun e përjashtimit që korrespondon me gabimin "ZeroDivisionError".

Printo "Oops, e pavlefshme."

>>> fnexcept()

Mos, e pavlefshme.

Importi

Bibliotekat e jashtme mund të lidhen duke përdorur procedurën "import", ku është emri i bibliotekës që lidhet. Ju gjithashtu mund të përdorni komandën "nga importi" në mënyrë që të përdorni një funksion nga biblioteka:

import random #Importo bibliotekën "rastësore".

nga koha e importimit të orës #Dhe në të njëjtën kohë funksioni "clock" nga biblioteka "time".

randomint = random.randint(1, 100)

>>> printoni rastësisht

Puna me sistemin e skedarëve

Python ka shumë biblioteka të integruara. Në këtë shembull, ne do të përpiqemi të ruajmë një strukturë liste në një skedar binar, ta lexojmë atë dhe ta ruajmë vargun në një skedar teksti. Për të transformuar strukturën e të dhënave ne do të përdorim bibliotekën standarde "turshi":

turshi importi

mylist = ["Kjo", "është", 4, 13327]

# Hapni skedarin C:\binary.dat për të shkruar. simboli "r".

# parandalon zëvendësimin e karaktereve speciale (si p.sh. \n, \t, \b, etj.).

myfile = skedar (r"C:\binary.dat", "w")

pickle.dump (mylist, myfile)

myfile.close()

myfile = skedar (r"C:\text.txt", "w")

myfile.write ("Ky është një varg mostër")

myfile.close()

myfile = skedar (r"C:\text.txt")

>>> printoni myfile.read()

"Ky është një varg mostër"

myfile.close()

# Hapni skedarin për lexim

myfile = skedar (r"C:\binary.dat")

loadedlist = pickle.load(myfile)

myfile.close()

>>> printoni listën e ngarkuar

["Kjo", "është", 4, 13327]

Veçoritë

  • Kushtet mund të kombinohen. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Përdorni operatorin "del" për të variablat e pastra ose elementet e grupit.
  • Python ofron mundësi të mëdha për duke punuar me listat. Ju mund të përdorni operatorët e deklarimit të strukturës së listës. Operatori for ju lejon të specifikoni elementet e listës në një sekuencë specifike dhe operatori if ju lejon të zgjidhni elementë bazuar në një kusht.

>>> lst1 =

>>> lst2 =

>>> print

>>> print

# Operatori "çdo" kthehet i vërtetë nëse edhe pse

# nëse një nga kushtet e përfshira në të plotësohet.

>>> çdo (i % 3 për i në )

E vërtetë

# Procedura e mëposhtme numëron numrin

# elemente që përputhen në listë

>>> shuma (1 për i në nëse i == 3)

>>> del lst1

>>> print lst1

>>> del lst1

  • Variablat Globalë janë deklaruar jashtë funksioneve dhe mund të lexohen pa asnjë deklaratë. Por nëse ju duhet të ndryshoni vlerën e një ndryshoreje globale nga një funksion, atëherë duhet ta deklaroni atë në fillim të funksionit me fjalën kyçe "global", nëse nuk e bëni këtë, atëherë Python do të deklarojë një ndryshore që është i aksesueshëm vetëm për atë funksion.

numri = 5

def myfunc():

# Rezultatet 5

Numri i printimit

Def Anotherfunc():

# Kjo hedh një përjashtim sepse ndryshorja globale

# nuk u thirr nga një funksion. Python në këtë rast krijon

# ndryshore me të njëjtin emër brenda këtij funksioni dhe e aksesueshme

# vetëm për operatorët e këtij funksioni.

Numri i printimit

Numri = 3

def yetanotherfunc():

Numri global

# Dhe vetëm nga ky funksion ndryshohet vlera e ndryshores.

Numri = 3

Epilogu

Sigurisht, ky artikull nuk përshkruan të gjitha tiparet e Python. Shpresoj se ky artikull do t'ju ndihmojë nëse dëshironi të vazhdoni të mësoni këtë gjuhë programimi.

Përfitimet e Python

  • Shpejtësia e ekzekutimit të programeve të shkruara në Python është shumë e lartë. Kjo për faktin se bibliotekat kryesore të Python
    janë shkruar në C++ dhe kërkojnë më pak kohë për të përfunduar detyrat sesa gjuhët e tjera të nivelit të lartë.
  • Për shkak të kësaj, ju mund të shkruani modulet tuaja Python në C ose C++
  • Në bibliotekat standarde të Python mund të gjeni mjete për të punuar me email, protokolle
    Interneti, FTP, HTTP, bazat e të dhënave, etj.
  • Skriptet e shkruara duke përdorur Python ekzekutohen në shumicën e sistemeve operative moderne. Kjo transportueshmëri lejon Python të përdoret në një gamë të gjerë aplikacionesh.
  • Python është i përshtatshëm për çdo zgjidhje programimi, qofshin ato programe zyre, aplikacione ueb, aplikacione GUI, etj.
  • Mijëra entuziastë nga e gjithë bota punuan në zhvillimin e Python. Mbështetja për teknologjitë moderne në bibliotekat standarde mund t'i atribuohet faktit se Python ishte i hapur për të gjithë.

Le të kalojmë në pjesën teorike dhe praktike dhe të fillojmë me atë se çfarë është një përkthyes.

Përkthyes

Përkthyesështë një program që ekzekuton programe të tjera. Kur shkruani një program në Python, interpretuesi lexon programin tuaj dhe ekzekuton udhëzimet që ai përmban. Në realitet, përkthyesi është një shtresë e logjikës së programit midis kodit të programit dhe harduerit të kompjuterit tuaj.

Në varësi të versionit të Python që po përdorni, vetë interpretuesi mund të zbatohet si një program C, si një grup klasash Java, ose në ndonjë formë tjetër, por më shumë për këtë më vonë.

Ekzekutimi i një skripti në tastierë

Le të ekzekutojmë përkthyesin në tastierë:

Tani është duke pritur për hyrjen e komandës, futni udhëzimin e mëposhtëm atje:

Shtyp "përshëndetje botë!"

po, programi ynë i parë! :D

Ekzekutimi i një skripti nga një skedar

Krijo një skedar "test.py", me përmbajtjen:

# print "përshëndetje botë" print "përshëndetje botë" # print 2 në fuqinë e 10 print 2 ** 10

dhe ekzekutoni këtë skedar:

# python /path/to/test.py

Kompilimi dinamik dhe bytekodi

Pasi të ekzekutoni skriptin, ai së pari përpilon burimin e skriptit në bytecode për makinën virtuale. Përpilimiështë thjesht një hap përkthimi, dhe bytecode është një përfaqësim i nivelit të ulët, i pavarur nga platforma i tekstit burimor të programit. Python përkthen çdo instruksion në kodin burimor të skriptit në grupe instruksionesh bajtkodi për të përmirësuar shpejtësinë e ekzekutimit të programit sepse bytekodi ekzekutohet shumë më shpejt. Pas përpilimit në bytecode, një skedar me shtesën ".pyc" pranë tekstit origjinal të skenarit.

Herën tjetër që të ekzekutoni programin tuaj, përkthyesi do të anashkalojë fazën e kompilimit dhe do të prodhojë një skedar të përpiluar me shtesën ".pyc" për ekzekutim. Sidoqoftë, nëse ndryshoni burimet e programit tuaj, hapi i përpilimit në bytecode do të ndodhë përsëri, pasi Python automatikisht mban gjurmët e datës së modifikimit të skedarit të kodit burimor.

Nëse Python nuk është në gjendje të shkruajë një skedar bajtkodi, për shembull për shkak të mungesës së lejeve të shkrimit në disk, atëherë programi nuk do të ndikohet, bitekodi thjesht do të mblidhet në memorie dhe do të hiqet prej andej kur të dalë programi.

Makina virtuale Python (PVM)

Pasi të kalojë procesi i përpilimit, bytekodi kalon në një mekanizëm të quajtur Makine virtuale, i cili do të ekzekutojë instruksionet nga bajtkodi. Makine virtualeështë një mekanizëm ekzekutimi, ai është gjithmonë i pranishëm në sistemin Python dhe është një komponent ekstrem i sistemit të quajtur "Python Interpreter".

Për të konsoliduar atë që kemi mësuar, le të sqarojmë situatën edhe një herë: kompilimi në bytecode bëhet automatikisht dhe PVM është vetëm një pjesë e sistemit Python që keni instaluar së bashku me interpretuesin dhe përpiluesin. Çdo gjë ndodh në mënyrë transparente për programuesin dhe nuk keni pse t'i kryeni këto operacione me dorë.

Performanca

Programuesit me përvojë në gjuhë të tilla si C dhe C++ mund të vërejnë disa ndryshime në modelin e ekzekutimit të Python. E para është se nuk ka asnjë hap ndërtimi ose thirrje të mjetit "make"; programet Python mund të ekzekutohen menjëherë pas shkrimit të kodit burimor. Dallimi i dytë është se bytekodi nuk është kod binar i makinës (për shembull, udhëzime për një mikroprocesor Intel), ai është një paraqitje e brendshme e një programi Python.

Për këto arsye, programet në Python nuk mund të ekzekutohen aq shpejt sa në C/C++. Instruksionet përshkohen nga sistemi virtual, jo nga mikroprocesori, dhe për të ekzekutuar bajtkodin nevojitet interpretim shtesë, udhëzimet e të cilit zgjasin më shumë se udhëzimet e makinës së mikroprocesorit.

Megjithatë, nga ana tjetër, ndryshe nga interpretuesit tradicionalë, për shembull në PHP, ekziston një fazë shtesë e kompilimit - përkthyesi nuk ka nevojë të analizojë tekstin burimor të programit çdo herë.

Si rezultat, performanca e Python bie midis gjuhëve programuese tradicionale të përpilimit dhe interpretimit tradicional.

Zbatimet alternative të Python

Ajo që u tha më sipër për përpiluesin dhe makinën virtuale është tipike për zbatimin standard të Python, të ashtuquajturin CPython (zbatim në ANSI C). Megjithatë, ka edhe implementime alternative si Jython dhe IronPython, të cilat do të diskutohen tani.

Ky është zbatimi standard dhe origjinal i Python, i quajtur kështu sepse është shkruar në ANSI C. Kjo është ajo që ne instaluam kur zgjodhëm paketën ActivePython ose instaluar nga FreeBSD portet. Meqenëse ky është një zbatim referimi, në përgjithësi është punon më shpejt, më konsistente dhe më mirë sesa zbatimet alternative.

Xhitoni

Emri origjinal JPython, qëllimi kryesor - integrim i ngushtë me gjuhën e programimit Java. Zbatimi i Jython përbëhet nga klasa Java që përpilon kodin Python në bitekodin Java dhe më pas transmeton bajtkodin që rezulton Makina virtuale Java (JVM).

Qëllimi i Jython është të lejojë programet Python të kontrollojnë aplikacionet Java, ashtu si CPython mund të kontrollojë komponentët C/C++. Ky implementim ka integrim pa probleme me Java. Për shkak se kodi Python përkthehet në bitekod Java, ai sillet saktësisht si një program i vërtetë Java në kohën e ekzekutimit. Programet Jython mund të veprojnë si aplete dhe servlet, të krijojnë një ndërfaqe grafike duke përdorur mekanizmat Java, etj. Për më tepër, Jython ofron mbështetje për aftësinë për të importuar dhe përdorur klasa Java në kodin Python.

Megjithatë, për shkak se zbatimi i Jython është më i ngadalshëm dhe më pak i fuqishëm se CPython, është me interes për zhvilluesit e Java-s që kanë nevojë për një gjuhë skriptimi si një ndërfaqe me kodin Java.

Implementimi është krijuar për të siguruar integrimin e programeve Python me aplikacionet e ndërtuara për t'u ekzekutuar në Microsoft .NET Framework të sistemit operativ Windows, si dhe Mono, ekuivalenti me burim të hapur për Linux. Korniza .NET dhe koha e ekzekutimit në C# janë krijuar për të mundësuar ndërveprimin midis objekteve të softuerit - pavarësisht nga gjuha e programimit të përdorur - në frymën e modelit të mëparshëm COM të Microsoft.

IronPython lejon programet e Python të veprojnë si komponentë klienti dhe serveri të aksesueshëm nga gjuhë të tjera programimi .NET. Sepse zhvillimi kryhet nga Microsoft, ndër të tjera do të pritej optimizime të rëndësishme të performancës nga IronPython.

Mjetet e optimizimit të shpejtësisë së ekzekutimit

Ka implementime të tjera, duke përfshirë një përpilues dinamik Psiko dhe përkthyesi Shedskin C++, të cilët përpiqen të optimizojnë modelin themelor të ekzekutimit.

Përpiluesi dinamik Psyco

Sistemi psikikështë një komponent që zgjeron modelin e ekzekutimit të bytekodit, duke lejuar që programet të funksionojnë më shpejt. Psikoështë një zgjatim PVM, i cili mbledh dhe përdor informacionin e tipit për të përkthyer pjesë të bytekodit të një programi në kodin e vërtetë binar të makinës, i cili ekzekutohet shumë më shpejt. Ky përkthim nuk kërkon ndryshime në kodin burimor ose përpilim shtesë gjatë zhvillimit.

Gjatë ekzekutimit të programit, Psyco mbledh informacion në lidhje me llojet e objekteve dhe ky informacion përdoret më pas për të gjeneruar kodin e makinës shumë efikas të optimizuar për atë lloj objekti. Kodi i prodhuar i makinës zëvendëson më pas seksionet përkatëse të bytekodit, duke rritur kështu shpejtësinë e ekzekutimit.

Idealisht, disa seksione të kodit të programit janë nën kontrollin e Psyco mund të funksionojë aq shpejt sa kodi C i përpiluar.

Psyco siguron rritje të shpejtësisë që variojnë nga 2 në 100 herë, por zakonisht 4 herë, kur përdorni një interpretues të pamodifikuar Python. E vetmja pengesë e Psyco është se aktualisht është në gjendje të gjenerojë vetëm kodin e makinës për arkitekturën Intel x86.

Psyco nuk vjen standard; duhet të shkarkohet dhe instalohet veçmas. Ekziston edhe një projekt PyPy, që paraqet një përpjekje për të rishkruar PVM për të optimizuar kodin si në Psiko, projekt PyPy do të thithë më shumë nga projekti Psiko.

Përkthyes Shedskin C++

Lëkura e derdhjesështë një sistem që konverton kodin burimor të Python në kod burimor C++, i cili më pas mund të kompilohet në kodin e makinës. Përveç kësaj, sistemi zbaton një qasje të pavarur nga platforma për ekzekutimin e kodit Python.

Binarët e ngrirë

Ndonjëherë ju duhet të krijoni skedarë të pavarur të ekzekutueshëm nga programet tuaja Python. Kjo është e nevojshme më tepër për paketimin dhe shpërndarjen e programeve.

Binarët e fiksuar kombinojnë bajtkodin e programeve, PVM-të dhe skedarët mbështetës të nevojshëm nga programet në një skedar të vetëm pakete. Rezultati është një skedar i vetëm i ekzekutueshëm, si p.sh. një skedar me shtesën ".exe" për Windows.

Sot ekzistojnë tre mjete kryesore për krijimin e "binareve të ngrira":

  • py2exe- mund të krijojë programe të pavarura për Windows që përdorin bibliotekat Tkinter, PMW, wxPython dhe PyGTK për të krijuar një ndërfaqe grafike, programe që përdorin softuerin e krijimit të lojës PyGame, programe klienti win32com dhe shumë të tjera;
  • PyInstaller- i ngjan py2exe, por gjithashtu funksionon në Linux dhe UNIX dhe është i aftë të prodhojë ekzekutues vetë-instalues;
  • ngrijë- versioni origjinal.

Ju duhet t'i shkarkoni këto mjete veçmas nga Python, ato janë falas.

Binarët fiks janë mjaft të mëdhenj sepse përmbajnë PVM, por sipas standardeve moderne ato nuk janë ende jashtëzakonisht të mëdha. Meqenëse interpretuesi Python është ndërtuar direkt në binarët fiks, instalimi i tij nuk është një kërkesë për ekzekutimin e programeve në fundin marrës.

Përmbledhje

Kjo është e gjitha për sot, në artikullin tjetër do të flas për llojet standarde të të dhënave në Python, dhe në artikujt vijues do të shikojmë secilin lloj veç e veç, si dhe funksionet dhe operatorët për të punuar me këto lloje.

Programimi në Python

Pjesa 1. Aftësitë gjuhësore dhe sintaksa bazë

Seria e përmbajtjes:

A ia vlen të mësosh Python?

Python është një nga gjuhët më të njohura të programimit modern. Është i përshtatshëm për zgjidhjen e një sërë problemesh dhe ofron të njëjtat aftësi si gjuhët e tjera të programimit: dinamizëm, mbështetje OOP dhe ndër-platformë. Zhvillimi i Python filloi nga Guido Van Rossum në mesin e viteve 1990, kështu që deri tani ka qenë e mundur të shpëtojmë nga sëmundjet standarde të "fëmijërisë", të zhvillohen ndjeshëm aspektet më të mira të gjuhës dhe të tërhiqen shumë programues që përdorin Python për të zbatuar ato. projektet.

Shumë programues besojnë se është e nevojshme të mësoni vetëm gjuhë programimi "klasike" si Java ose C++, pasi gjuhët e tjera nuk do të jenë në gjendje të ofrojnë të njëjtat aftësi gjithsesi. Megjithatë, kohët e fundit ka lindur një besim se është e këshillueshme që një programues të dijë më shumë se një gjuhë, pasi kjo i zgjeron horizontet e tij, duke e lejuar atë të zgjidhë në mënyrë më kreative problemet dhe të rrisë konkurrencën e tij në tregun e punës.

Mësimi i përsosur i dy gjuhëve si Java dhe C++ është mjaft i vështirë dhe do të kërkonte shumë kohë; për më tepër, shumë aspekte të këtyre gjuhëve kundërshtojnë njëra-tjetrën. Në të njëjtën kohë, Python është ideal për rolin e një gjuhe të dytë, pasi përthithet menjëherë falë njohurive tashmë ekzistuese të OOP, dhe faktit që aftësitë e tij nuk bien ndesh, por plotësojnë përvojën e fituar nga puna me një program tjetër. gjuhe.

Nëse një programues sapo ka filluar në fushën e zhvillimit të softuerit, atëherë Python do të jetë një gjuhë programimi "hyrëse" ideale. Falë shkurtësisë së tij, do t'ju lejojë të zotëroni shpejt sintaksën e gjuhës, dhe mungesa e "trashëgimisë" në formën e aksiomave të formuara gjatë shumë viteve do t'ju ndihmojë të zotëroni shpejt OOP. Për shkak të këtyre faktorëve, kurba e të mësuarit për Python do të jetë mjaft e shkurtër dhe programuesi do të jetë në gjendje të kalojë nga shembujt arsimorë në projekte komerciale.

Prandaj, pa marrë parasysh se kush është lexuesi i këtij artikulli - një programues me përvojë apo një fillestar në fushën e zhvillimit të softuerit, përgjigjja e pyetjes, e cila është titulli i këtij seksioni, duhet të jetë një "po".

Kjo seri artikujsh është krijuar për t'ju ndihmuar të kapërceni me sukses kurbën e të mësuarit duke ofruar informacion nga parimet më themelore të gjuhës deri te aftësitë e saj të avancuara për integrim me teknologji të tjera. Artikulli i parë do të mbulojë tiparet themelore dhe sintaksën e Python. Në vijim do të shikojmë aspektet më të avancuara të punës me këtë gjuhë popullore, në veçanti programimin e orientuar nga objekti në Python.

Arkitektura Python

Çdo gjuhë, qoftë për programim apo komunikim, përbëhet nga të paktën dy pjesë - fjalori dhe sintaksa. Gjuha Python është e organizuar saktësisht në të njëjtën mënyrë, duke siguruar një sintaksë për formimin e shprehjeve që formojnë programe të ekzekutueshme, dhe një fjalor - një grup funksionesh në formën e një biblioteke standarde dhe shtojcave.

Siç u përmend, sintaksa e Python është mjaft koncize, veçanërisht kur krahasohet me Java ose C++. Nga njëra anë, kjo është e mirë, pasi sa më e thjeshtë të jetë sintaksa, aq më e lehtë është për t'u mësuar dhe aq më pak gabime mund të bëni gjatë përdorimit të saj. Sidoqoftë, gjuhë të tilla kanë një pengesë - ato mund të përdoren për të përcjellë informacionin më të thjeshtë dhe nuk mund të shprehin struktura komplekse.

Kjo nuk vlen për Python, pasi është një gjuhë e thjeshtë por e thjeshtuar. Fakti është se Python është një gjuhë me një nivel më të lartë abstraksioni, më i lartë, për shembull, se Java dhe C++, dhe ju lejon të përcillni të njëjtën sasi informacioni në një sasi më të vogël të kodit burimor.

Python është gjithashtu një gjuhë me qëllime të përgjithshme, kështu që mund të përdoret pothuajse në çdo fushë të zhvillimit të softuerit (të pavarur, klient-server, aplikacione në ueb) dhe në çdo fushë lëndore. Përveç kësaj, Python integrohet lehtësisht me komponentët ekzistues, duke ju lejuar të futni Python në aplikacione tashmë të shkruara.

Një komponent tjetër i suksesit të Python janë modulet e tij shtesë, standarde dhe specifike. Modulet standarde të zgjerimit Python janë funksionalitete të dizajnuara mirë dhe të testuara me kohë për të zgjidhur problemet që lindin në çdo projekt të zhvillimit të softuerit, përpunimin e vargjeve dhe tekstit, ndërveprimin me sistemin operativ dhe mbështetjen për aplikacionet në ueb. Këto module janë shkruar gjithashtu në Python, kështu që ata kanë pronën e tij më të rëndësishme - ndër-platformë, duke ju lejuar të transferoni pa dhimbje dhe shpejt projektet nga një sistem operativ në tjetrin.

Nëse funksionaliteti i kërkuar nuk është në bibliotekën standarde të Python, mund të krijoni modulin tuaj të zgjerimit për përdorim të përsëritur të mëvonshëm. Vlen të përmendet këtu se modulet shtesë për Python mund të krijohen jo vetëm në vetë gjuhën Python, por edhe duke përdorur gjuhë të tjera programimi. Në këtë rast, është e mundur që në mënyrë më efikase të zbatohen detyra që kërkojnë burime intensive, siç janë llogaritjet komplekse shkencore, por avantazhi i ndër-platformës humbet nëse gjuha e modulit shtesë nuk është vetë ndër-platformë, si Python.

Koha e ekzekutimit të Python

Siç e dini, të gjitha gjuhët e programimit ndër-platformë janë ndërtuar në të njëjtin model: është me të vërtetë kod burimor portativ dhe një mjedis kohëzgjatjeje, i cili nuk është i lëvizshëm dhe specifik për secilën platformë specifike. Ky mjedis ekzekutimi zakonisht përfshin një përkthyes që ekzekuton kodin burimor, dhe mjete të ndryshme të nevojshme për të mirëmbajtur aplikacionin - një korrigjues, asembler të kundërt, etj.

Mjedisi i kohës së ekzekutimit Java përfshin gjithashtu një përpilues sepse kodi burimor duhet të kompilohet në bytecode për makinën virtuale Java. Koha e ekzekutimit të Python përfshin vetëm një interpretues, i cili është gjithashtu një përpilues, por përpilon kodin burimor të Python direkt në kodin e makinës në platformën e synuar.

Aktualisht janë të njohura tre zbatime të kohës së ekzekutimit për Python: CPython, Jython dhe Python.NET. Siç sugjeron emri, korniza e parë zbatohet në C, e dyta në Java dhe e fundit në platformën .NET.

Koha e ekzekutimit të CPython zakonisht quhet thjesht Python, dhe kur njerëzit flasin për Python, ata më së shpeshti nënkuptojnë këtë zbatim. Ky implementim përbëhet nga një interpretues dhe module shtesë të shkruara në C, dhe mund të përdoret në çdo platformë për të cilën disponohet një përpilues standard C. Përveç kësaj, ekzistojnë versione të para-përpiluara të kohës së ekzekutimit për sisteme të ndryshme operative, duke përfshirë versione të ndryshme të Windows OS dhe shpërndarje të ndryshme Linux. Në këtë dhe artikuj pasues, CPython do të merret në konsideratë, përveç nëse përcaktohet ndryshe veçmas.

Koha e ekzekutimit të Jython është një zbatim i Python për ekzekutimin e Makinës Virtuale Java (JVM). Çdo version JVM mbështetet, duke filluar nga versioni 1.2.2 (versioni aktual Java është 1.6). Puna me Jython kërkon një makineri Java të instaluar (mjedis Java ekzekutimi) dhe disa njohuri të gjuhës programuese Java. Nuk është e nevojshme të dini se si të shkruani kodin burim në Java, por do të duhet të merreni me skedarët JAR dhe aplikacionet Java, si dhe dokumentacionin në formatin JavaDOC.

Cili version i mjedisit për të zgjedhur varet vetëm nga preferencat e programuesit; në përgjithësi, rekomandohet të mbani të dy CPython dhe Jython në kompjuter, pasi ato nuk bien ndesh me njëra-tjetrën, por plotësojnë njëra-tjetrën. Mjedisi CPython është më i shpejtë sepse nuk ka shtresë të ndërmjetme në formën e një JVM; Përveç kësaj, versionet e përditësuara të Python lëshohen fillimisht si mjedisi CPython. Sidoqoftë, Jython mund të përdorë çdo klasë Java si një modul shtesë dhe të ekzekutohet në çdo platformë për të cilën ekziston një implementim JVM.

Të dy mjediset e ekzekutimit lëshohen nën një licencë të përputhshme me licencën e mirënjohur GPL, kështu që ato mund të përdoren për zhvillimin e softuerit komercial dhe të lirë. Shumica e shtesave të Python janë gjithashtu të licencuara nga GPL dhe mund të përdoren lirisht në çdo projekt, por ka edhe shtesa komerciale ose shtesa me licenca më të rrepta. Prandaj, kur përdorni Python në një projekt tregtar, duhet të dini se çfarë kufizimesh ekzistojnë në licencat shtesë të shtojcave.

Fillimi me Python

Para se të filloni të përdorni Python, duhet të instaloni mjedisin e tij të ekzekutimit - në këtë artikull ky është CPython dhe, në përputhje me rrethanat, interpretuesi python. Ka metoda të ndryshme instalimi: përdoruesit me përvojë mund të përpilojnë vetë Python nga kodi burimor i disponueshëm publikisht, ata gjithashtu mund të shkarkojnë skedarë të gatshëm të ekzekutueshëm për një sistem operativ specifik nga faqja e internetit www.python.org, dhe së fundi, vijnë shumë shpërndarje Linux me një interpretues të para-instaluar Python. Ky artikull përdor versionin Windows të Python 2.x, por shembujt e paraqitur mund të ekzekutohen në çdo version të Python.

Pasi instaluesi të ketë vendosur ekzekutuesit e Python në drejtorinë e specifikuar, duhet të kontrolloni vlerat e variablave të mëposhtëm të sistemit:

  • RRUGË. Kjo variabël duhet të përmbajë shtegun drejt drejtorisë ku është instaluar Python në mënyrë që sistemi operativ ta gjejë atë.
  • PYTHONHOME. Kjo variabël duhet të përmbajë vetëm shtegun drejt drejtorisë ku është instaluar Python. Kjo direktori duhet të përmbajë gjithashtu një nëndrejtori lib që do të kërkohet për module standarde Python.
  • PYTONPATH. Një variabël me një listë drejtorish që përmbajnë module shtesë që do të lidhen me Python (elementet e listës duhet të ndahen nga një kufizues sistemi).
  • PYTHONSTARTUP. Një variabël opsionale që specifikon shtegun drejt skriptit Python që duhet të ekzekutohet sa herë që fillon një sesion interpretuesi interaktiv Python.

Linja e komandës për të punuar me interpretuesin ka strukturën e mëposhtme.

PYTHONHOME\python (opsione) [ -c komanda | skedari i skriptit | - ] (argumente)

Modaliteti Interaktiv Python

Nëse e nisni interpretuesin pa specifikuar një skedar komandimi ose skripti, ai do të fillojë në modalitetin interaktiv. Në këtë mënyrë, lëshohet një guaskë speciale Python në të cilën mund të futen komanda ose shprehje individuale dhe vlera e tyre do të llogaritet menjëherë. Kjo është shumë e përshtatshme kur mësoni Python, pasi mund të kontrolloni menjëherë korrektësinë e një ndërtimi të veçantë.

Vlera e shprehjes së vlerësuar ruhet në një variabël të veçantë të quajtur Single Underscore (_) në mënyrë që të mund të përdoret në shprehjet pasuese. Mund të përfundoni një sesion interaktiv duke përdorur shkurtoren e tastierës Ctrl–Z në Windows ose Ctrl–D në Linux.

Opsionet janë vlera të vargut opsional që mund të ndryshojnë sjelljen e përkthyesit gjatë një sesioni; rëndësia e tyre do të diskutohet në këtë dhe në artikujt vijues. Opsionet specifikojnë ose një komandë specifike që do të ekzekutohet nga interpretuesi, ose shtegun drejt një skedari që përmban skriptin që do të ekzekutohet. Vlen të përmendet se një komandë mund të përbëhet nga disa shprehje, të ndara me pikëpresje dhe duhet të mbyllet në thonjëza në mënyrë që sistemi operativ t'ia kalojë saktë interpretuesit. Argumentet janë ato parametra që kalohen për përpunim të mëvonshëm në skriptin e ekzekutueshëm; ato kalohen në program si vargje dhe ndahen me hapësira.

Për të verifikuar që Python është instaluar saktë dhe po funksionon siç duhet, mund të ekzekutoni komandat e mëposhtme:

c:\>python-v
c:\> python –c “koha e importit; koha e printimit.asctime()”

Opsioni -v printon versionin e zbatimit të Python që përdoret dhe del, ndërsa komanda e dytë printon vlerën e kohës së sistemit në ekran.

Ju mund të shkruani skriptet Python në çdo redaktues teksti, pasi ato janë skedarë teksti të zakonshëm, por ka edhe mjedise të veçanta zhvillimi të krijuara për të punuar me Python.

Bazat e sintaksës së Python

Skriptet e kodit burimor Python përbëhen nga të ashtuquajturat vargjet logjike, secila prej të cilave nga ana e saj përbëhet nga linjat fizike. Simboli # përdoret për të treguar komentet. Përkthyesi i shpërfill komentet dhe rreshtat boshe.

Më poshtë është një aspekt shumë i rëndësishëm që mund të duket i çuditshëm për programuesit që mësojnë Python si një gjuhë të dytë programimi. Fakti është se në Python nuk ka asnjë simbol që do të ishte përgjegjës për ndarjen e shprehjeve nga njëra-tjetra në kodin burimor, siç është pikëpresja (;) në C++ ose Java. Një pikëpresje ju lejon të ndani udhëzime të shumta nëse janë në të njëjtën linjë fizike. Nuk ka gjithashtu asnjë konstrukt të tillë si mbajtëset kaçurrelë (), i cili ju lejon të kombinoni një grup udhëzimesh në një bllok të vetëm.

Linjat fizike ndahen nga vetë karakteri i fundit të rreshtit, por nëse shprehja është shumë e gjatë për një rresht, atëherë dy linjat fizike mund të kombinohen në një linjë logjike. Për ta bërë këtë, duhet të futni një karakter të kundërt (\) në fund të rreshtit të parë, dhe më pas përkthyesi do të interpretojë rreshtin tjetër si vazhdim i së parës, megjithatë, është e pamundur që të ketë karaktere të tjera në rreshti i parë pas karakterit \, për shembull, një koment me #. Vetëm dhëmbëzimi përdoret për të theksuar blloqet e kodit. Linjat logjike me të njëjtën madhësi dhëmbëzimi formojnë një bllok dhe blloku përfundon kur shfaqet një vijë logjike me një madhësi më të vogël të dhëmbëzimit. Kjo është arsyeja pse rreshti i parë i një skripti Python nuk duhet të jetë i dhëmbëzuar. Zotërimi i këtyre rregullave të thjeshta do t'ju ndihmojë të shmangni shumicën e gabimeve që lidhen me mësimin e një gjuhe të re.

Nuk ka dallime të tjera radikale në sintaksën e Python nga gjuhët e tjera të programimit. Ekziston një grup standard i operatorëve dhe fjalëve kyçe, shumica e të cilave tashmë janë të njohura për programuesit, ndërsa ato specifike për Python do të trajtohen në këtë dhe në artikujt pasues. Rregullat standarde përdoren gjithashtu për specifikimin e identifikuesve të variablave, metodave dhe klasave - emri duhet të fillojë me një nënvizim ose një karakter latin të çdo rasti dhe nuk mund të përmbajë karakteret @, $, %. Gjithashtu, vetëm një karakter nënvizues nuk mund të përdoret si identifikues (shih fusnotën që flet për mënyrën interaktive të funksionimit).

Llojet e të dhënave të përdorura në Python

Llojet e të dhënave të përdorura në Python janë gjithashtu të njëjta me gjuhët e tjera - llojet e të dhënave të plota dhe reale; Për më tepër, mbështetet një lloj kompleks i të dhënave - me një pjesë reale dhe imagjinare (një shembull i një numri të tillë është 1.5J ose 2j, ku J është rrënja katrore e -1). Python mbështet vargjet që mund të mbyllen në thonjëza të vetme, të dyfishta ose të trefishta, dhe vargjet, si Java, janë objekte të pandryshueshme, d.m.th. nuk mund të ndryshojë vlerën e tyre pas krijimit.

Python gjithashtu ka një bool të tipit logjik të të dhënave me dy opsione vlerash - True dhe False. Sidoqoftë, në versionet më të vjetra të Python nuk kishte një lloj të tillë të dhënash, dhe për më tepër, çdo lloj i të dhënave mund të hidhej në vlerën boolean True ose False. Të gjithë numrat jozero dhe vargjet jo bosh ose koleksionet e të dhënave u trajtuan si True, dhe vlerat boshe dhe zero u trajtuan si False. Kjo veçori është ruajtur në versionet e reja të Python, megjithatë, për të rritur lexueshmërinë e kodit, rekomandohet përdorimi i llojit bool për variablat boolean. Në të njëjtën kohë, nëse keni nevojë të ruani përputhshmërinë e prapambetur me implementimet më të vjetra të Python, atëherë duhet të përdorni 1 (True) ose 0 (False) si variabla boolean.

Funksionaliteti për të punuar me grupe të dhënash

Python përcakton tre lloje të koleksioneve për ruajtjen e grupeve të të dhënave:

  • tuple (tup);
  • lista (lista);
  • Fjalor.

Një tuple është një sekuencë e renditur e pandryshueshme e të dhënave. Mund të përmbajë elementë të llojeve të ndryshme, si për shembull tuple të tjerë. Një tuple përcaktohet në kllapa dhe elementët e tij ndahen me presje. Një funksion i veçantë i integruar, tuple(), ju lejon të krijoni tuple nga një sekuencë e caktuar të dhënash.

Një listë është një sekuencë e ndryshueshme, e renditur e elementeve. Elementet e listës ndahen gjithashtu me presje, por specifikohen në kllapa katrore. Për të krijuar lista, propozohet funksioni list().

Një fjalor është një tabelë hash që ruan një element së bashku me çelësin e tij identifikues. Qasja pasuese në elementë kryhet gjithashtu me çelës, kështu që njësia e ruajtjes në një fjalor është një çift objekt-çelës dhe një objekt me vlerë të lidhur. Një fjalor është një koleksion i ndryshueshëm, por i parregulluar, kështu që rendi i elementeve në fjalor mund të ndryshojë me kalimin e kohës. Fjalori specifikohet në kllapa kaçurrelë, çelësi ndahet nga vlera me dy pika dhe vetë çiftet çelës/vlerë ndahen me presje. Funksioni dict() është i disponueshëm për të krijuar fjalorë.

Lista 1 tregon shembuj të koleksioneve të ndryshme të disponueshme në Python.

Listimi 1. Llojet e koleksioneve të disponueshme në Python
('w','o','r','l','d') # tuple me pesë elementë (2.62,) # tuple e një elementi [“test”, “unë”] # listë me dy elementë # listë boshe ( 5:'a', 6:'b', 7:'c' ) # fjalor me tre elementë me çelësa të tipit int

Përcaktimi i funksioneve në Python

Megjithëse Python mbështet OOP, shumë nga veçoritë e tij zbatohen si funksione të veçanta; Për më tepër, modulet e zgjerimit bëhen më shpesh në formën e një biblioteke funksionesh. Funksionet përdoren gjithashtu në klasa, ku tradicionalisht quhen metoda.

Sintaksa për përcaktimin e funksioneve në Python është jashtëzakonisht e thjeshtë; duke marrë parasysh kërkesat e mësipërme:

def FUNCTION_NAME(parametrat): shprehja nr. 1 shprehja nr. 2 ...

Siç mund ta shihni, është e nevojshme të përdorni funksionin fjalë def, dy pika dhe indentation. Thirrja e funksionit është gjithashtu shumë e thjeshtë:

FUNCTION_NAME (parametrat)

Ka vetëm disa gjëra specifike për Python për t'u marrë parasysh. Ashtu si në Java, vlerat primitive kalohen me vlerë (një kopje e parametrit i kalohet funksionit dhe nuk mund të ndryshojë vlerën e vendosur përpara se të thirrej funksioni), dhe llojet komplekse të objekteve kalohen me referencë (një referencë është kalohet në funksion dhe mund të ndryshojë objektin).

Parametrat mund të kalohen ose thjesht duke renditur renditjen ose me emër; në këtë rast, nuk keni nevojë të specifikoni kur thirrni ato parametra për të cilët ka vlera të paracaktuara, por kaloni vetëm ato të kërkuara ose ndryshoni rendin e parametrave kur thërrisni një funksion. :

#funksioni që kryen ndarjen e numrave të plotë - duke përdorur operatorin // def foo(delimoe, delitel): return delimoe // delitel print divide(50,5) # rezultati i punës: 10 print divide(delitel=5, delimoe=50) # rezultati i punës: 10

Një funksion në Python duhet të kthejë një vlerë - kjo bëhet ose në mënyrë eksplicite me një deklaratë kthimi e ndjekur nga vlera e kthimit, ose, në mungesë të një deklarate kthyese, konstanta Asnjë kthehet kur arrihet fundi i funksionit. Siç mund ta shihni nga shembulli i deklaratave të funksioneve, në Python nuk ka nevojë të specifikohet nëse diçka kthehet nga një funksion apo jo, por nëse një funksion ka një deklaratë kthimi që kthen një vlerë, atëherë deklaratat e tjera kthyese në atë funksion duhet të kthehen. vlerat, dhe nëse një vlerë e tillë jo, atëherë duhet të specifikoni në mënyrë eksplicite kthimin Asnjë.

Nëse funksioni është shumë i thjeshtë dhe përbëhet nga një rresht, atëherë ai mund të përcaktohet pikërisht në pikën e përdorimit; në Python, një ndërtim i tillë quhet funksion lambda. Një funksion lambda është një funksion anonim (pa emrin e tij), trupi i të cilit është një deklaratë kthimi që kthen vlerën e disa shprehjeve. Kjo qasje mund të jetë e përshtatshme në disa situata, por vlen të përmendet se ripërdorimi i funksioneve të tilla është i pamundur ("aty ku lindi, erdhi në ndihmë").

Vlen gjithashtu të përshkruhet qëndrimi i Python ndaj përdorimit të rekursionit. Si parazgjedhje, thellësia e rekursionit është e kufizuar në 1000 nivele dhe kur të kalohet ky nivel, do të ngrihet një përjashtim dhe programi do të ndalojë së funksionuari. Megjithatë, nëse është e nevojshme, vlera e këtij kufiri mund të ndryshohet.

Funksionet në Python kanë veçori të tjera interesante, si dokumentacioni dhe aftësia për të përcaktuar funksionet e ndërlidhura, por këto do të eksplorohen në artikujt e mëvonshëm të serisë me shembuj më kompleks.

Që kur fillova të mësoj Python në 2011, kam gjetur disa burime që i përdor rregullisht. Kur fillova për herë të parë të mësoja gjuhën, u befasova se sa mikpritës ishte komuniteti Python. Dëshmi për këtë është sasia e madhe e materialeve falas dhe me cilësi të lartë në dispozicion. Më poshtë do të jap shembuj të atyre burimeve që thjesht nuk do të ekzistonin pa mbështetjen e komunitetit.

1. Shpikni lojërat tuaja kompjuterike me Python

Ju mund të keni tashmë librin tuaj të preferuar Python, por ju inkurajoj ta lexoni këtë. Mund ta blini, ta lexoni në internet ose ta shkarkoni falas në PDF. Më pëlqen e njëjta strukturë e kapitujve: së pari shtrohet problemi dhe më pas ka shembuj zgjidhjesh të problemeve me shpjegime të hollësishme. I njëjti autor shkroi edhe 3 libra të tjerë të mrekullueshëm.

2. Gdhendje

Unë kam punuar në shkolla ku për një arsye ose një tjetër (zakonisht arsye sigurie) Python nuk ishte i disponueshëm. Skulpt ekzekuton skriptet Python në shfletues dhe përfshin disa shembuj. I pari përdor modulin Turtle për të shfaqur forma gjeometrike. Shpesh e përdor për të testuar njohuritë e studentëve.

3. Merre me mend numrin

8. Të rastësishme

Python ka disa funksione të integruara të dobishme, të tilla si printimi dhe futja. Moduli i rastësishëm, nga ana tjetër, duhet të importohet përpara përdorimit. Kjo i lejon studentët të shtojnë pak paparashikueshmëri në projektet e tyre.

Importo monedhë të rastësishme = ['koka',' bisht'] rrokullisje = random.choice(monedhë) print(rrokullisje)

9.Anti graviteti

Unë rrallë e përdor modulin kundër gravitetit. Por kur duhet ta bëj këtë, pyes studentët se çfarë do të ndodhë kur ta importojnë. Zakonisht marr shumë përgjigje të ndryshme, ndonjëherë ata madje sugjerojnë që efekti i vërtetë i mungesës së peshës do të fillojë - ata mendojnë se Python është kaq i fuqishëm :) Mund ta provoni vetë dhe t'ua ofroni studentëve tuaj.

Importoni antigravitet

10. Sabotimi

Sfida më e madhe për mua si mësues ishte gjetja e gabimeve sintaksore në programet e studentëve. Për fat, para se të digjesha plotësisht nga rraskapitja, dola

Udhëzime hap pas hapi për këdo që dëshiron të mësojë programimin Python (ose programimin në përgjithësi), por nuk di se ku të bëjë hapin e parë.

Çfarë duhet bërë?

Ne shikuam shumë materiale trajnimi dhe thjesht artikuj të mirë dhe përpiluam një listë të asaj që duhet të mësoni për të zotëruar këtë gjuhë programimi dhe për t'u zhvilluar në të.

1. Mësoni së pari bazat. Mësoni se çfarë janë variablat, strukturat e kontrollit, strukturat e të dhënave. Kjo njohuri është e nevojshme pa u lidhur me një gjuhë specifike.

2. Studioni literaturë. Filloni me klasiken - Zhyt në Python. Ky libër në fakt mund të bëhet një libër referimi. Ju gjithashtu mund të lexoni Michael Dawson "Programimi në Python" dhe Alexey Vasiliev "Python me shembuj. Kurs praktik programimi." Dawson është një programues dhe mësues me përvojë, dhe në libër ai mëson programimin duke krijuar lojëra të thjeshta. Në librin e Vasiliev, përkundrazi, më shumë vëmendje i kushtohet bazave dhe teorisë.

4. Merrni kursin Hyrje në Shkenca Kompjuterike dhe Programim Python nga MIT.

5. Zbuloni se çfarë bibliotekash përdorin pitonistët e tjerë dhe për çfarë qëllimesh. Gjeni diçka interesante për veten tuaj.

6. Nëse jeni të interesuar për teknologjitë e uebit, kushtojini vëmendje kornizave Flask dhe Django. Zbuloni se për çfarë qëllimi është më i përshtatshëm, filloni të studioni atë që ju përshtatet.

7. Mësoni se si të merrni dhe analizoni grupe të dhënash nga faqet individuale, nga interneti dhe kudo tjetër - thjesht përpiquni të qëndroni brenda ligjit.

8. Kërkoni informacion rreth metodave të mësimit të makinerive.

9. Optimizoni punën me mjete, automatizoni rutinën dhe gjithçka që nuk është ende e automatizuar.

Ku të shkojnë?

Disa lidhje të dobishme me burimet që do t'ju ndihmojnë të Google pak më pak dhe të vendosni në cilin drejtim të punoni.

Burime të dobishme

Python Tutor

Ky mjet ju ndihmon të kapërceni një pengesë themelore për të kuptuar gjuhën e programimit që po mësoni: duke vizualizuar kodin, ky burim ofron një pasqyrë të asaj që po ndodh ndërsa kompjuteri ekzekuton çdo rresht kodi.

Bucky Roberts në YouTube

Nëse nuk jeni të njohur me programimin, këto mësime do t'ju ndihmojnë shumë. Ato janë të lehta për t'u kuptuar dhe mbulojnë gjithçka që mund t'ju nevojitet fillimisht, duke filluar me instalimin e gjuhës.

Derek Banas në Python në YouTube

Derek është një programues autodidakt dhe ka pikëpamjen e tij për të mësuar gjuhët e programimit. Ai bën rishikime të shkurtra video të gjuhëve të ndryshme, 40-60 minuta, në të cilat ai tregon gjithçka që ju nevojitet për të kuptuar në përgjithësi qëllimin e gjuhës.

Corey Schafer në YouTube

Corey ka video të mira për formatimin e vargjeve, gjeneratorët, termat e programimit (kombinimet dhe permutacionet, DRY, mbylljet) dhe shumë më tepër për t'ju ndihmuar të kuptoni konceptet.

Django Fillimi

Dokumentacioni zyrtar për kornizën e internetit Django. Mbulon gjithçka që duhet të dini kur filloni, nga konfigurimi deri te aplikacioni juaj i parë.

Hyrje në Flask

Një kurs video në YouTube për ata që duan të njihen me Flask, të kuptojnë disa nga hollësitë e tij dhe të zbulojnë pse është i nevojshëm fare.

Lidhje të dobishme

I ri

Python 3 për fillestarët
"Një bajt Python"

Artikujt më të mirë mbi këtë temë