Limbajul de programare Python. Antrenament de la zero: caracteristici, reguli și recomandări. O modalitate ușoară de a învăța limbajul de programare Python: există?

Python este un limbaj de programare de nivel înalt orientat pe obiecte scop general, interpretabil, interactiv. A fost creat de Guido van Rossum în 1985-1990. La fel ca codul sursă Perl, Python este disponibil și sub Licența publică generală GNU (). Python este numit după o emisiune TV numită Circul zburător al lui Monty Python.

Python 3.0 a fost lansat în 2008. Deși această versiune nu ar trebui să fie compatibilă cu versiunea anterioara, multe dintre caracteristicile sale importante au fost importate ulterior pentru compatibilitate cu versiunea 2.7. Acest tutorial descrie suficient pentru a înțelege limba Programare Python versiunea 3.

Public

Acest tutorial este destinat programatorilor care doresc să-și îmbunătățească abilitățile Python în Python 3 . Acest tutorial poate fi folosit și pentru a învăța limbajul de programare Python de la zero pentru începători.

Cerințe preliminare

Ar trebui să aveți o înțelegere generală programare pe calculator. Cunoașterea de bază a oricărui limbaj de programare este un plus.

Executarea unui program Python

Exemplu de program minim în Python:

#!/usr/bin/python3 print ("Bună ziua, Python!")

Python este un popular și limbaj puternic scripturi cu care poți face ce vrei. De exemplu, puteți accesa cu crawlere site-uri web și puteți colecta date de la ele, puteți crea rețele și instrumente, puteți efectua calcule, programa pentru Raspberry Pi, dezvolta programe de graficăși chiar jocuri video. În Python puteți \\ scrie programe de sistem independente de platformă.

În acest articol ne vom uita la elementele de bază ale programării în Python, vom încerca să acoperim toate caracteristicile de bază de care veți avea nevoie pentru a începe să utilizați limbajul. Ne vom uita la utilizarea claselor și metodelor pentru a rezolva diverse sarcini. Se presupune că sunteți deja familiarizat cu elementele de bază și sintaxa limbajului.

Ce este Python?

Nu voi intra în istoria creării și dezvoltării limbii, puteți afla cu ușurință din videoclipul care va fi atașat mai jos. Este important să rețineți că Python este un limbaj de scripting. Aceasta înseamnă că codul dvs. este verificat pentru erori și executat imediat, fără nicio compilare sau reluare suplimentară. Această abordare se mai numește și interpretabilă.

Acest lucru reduce productivitatea, dar este foarte convenabil. Există un interpret în care puteți introduce comenzi și puteți vedea imediat rezultatele acestora. Astfel de munca interactivă Ajută foarte mult la învățare.

Lucrează în cadrul interpretului

Rularea interpretului Python este foarte ușoară pe orice sistem de operare. De exemplu, pe Linux, trebuie doar să tastați comanda python în terminal:

În promptul interpretului care se deschide, vedem versiunea de Python care este utilizată în prezent. În zilele noastre, două versiuni de Python 2 și Python 3 sunt foarte comune. Ambele sunt populare deoarece multe programe și biblioteci au fost dezvoltate pe prima, iar a doua are mai multe capacități. Prin urmare, distribuțiile includ ambele versiuni. În mod implicit, a doua versiune este lansată. Dar dacă aveți nevoie de versiunea 3, atunci trebuie să faceți:

Este a treia versiune care va fi luată în considerare în acest articol. Acum să ne uităm la principalele caracteristici ale acestui limbaj.

Operații cu șiruri

Șirurile în Python sunt imuabile; nu puteți schimba unul dintre caracterele dintr-un șir. Orice modificare a conținutului necesită crearea unei noi copii. Deschideți interpretul și urmați exemplele enumerate mai jos pentru a înțelege mai bine tot ce este scris:

1. Concatenarea șirurilor

str = „Bine ați venit” + „la Python”
print(str)

2. Înmulțirea șirurilor

str = „Pierdere” * 2
print(str)

3. Fuziunea cu transformarea

Puteți concatena un șir cu un număr sau o valoare booleană. Dar pentru aceasta trebuie să folosiți o transformare. Există o funcție str() pentru aceasta:

str = „Acesta este un număr de test” + str(15)
print(str)

4. Căutați un subșir

Puteți găsi un caracter sau un subșir folosind metoda find:

str = „Bine ați venit pe site”
print(str.find("site"))

Această metodă afișează poziția primei apariții a site-ului subșir dacă acesta este găsit dacă nu se găsește nimic, atunci valoarea -1 este returnată. Funcția începe căutarea de la primul caracter, dar puteți începe de la al n-lea caracter, de exemplu 26:

str = „Bine ați venit pe site-ul”
print(str.find("lost",26))

În această variantă, funcția va returna -1 deoarece șirul nu a fost găsit.

5. Obținerea unui subșir

Am obținut poziția subșirului pe care îl căutăm, dar acum cum să obținem subșirul în sine și ce urmează după el? Pentru a face acest lucru, utilizați această sintaxă [start:end], specificați doar două numere sau doar primul:

str = „Un doi trei”
print(str[:2])
print(str)
print(str)
print(str[-1])

Prima linie va tipări un subșir de la primul la al doilea caracter, al doilea - de la al doilea până la sfârșit. Vă rugăm să rețineți că numărătoarea inversă începe de la zero. Pentru a număra înapoi, utilizați un număr negativ.

6. Înlocuirea subșirurilor

Puteți înlocui o parte dintr-un șir folosind metoda de înlocuire:

str = "Acest site este despre Linux"
str2 = str.replace(„Linux”, „Windows”)
print(str2)

Dacă există multe apariții, atunci o puteți înlocui numai pe prima:

str = "Acesta este un site despre Linux și sunt abonat la acest site"
str2 = str.replace(„site”, „pagină”, 1)
print(str2)

7. Curățarea șirurilor

Puteți șterge spatii suplimentare folosind funcția bandă:

str = „Acesta este un site web despre Linux”
print(str.strip())

De asemenea, puteți elimina spațiile suplimentare doar pe partea dreaptă cu rstrip sau numai pe partea stângă cu lstrip.

8. Schimbarea registrului

Există funcții speciale pentru a schimba majusculele caracterelor:

str="Bine ați venit la Lost"
print(str.upper())
print(str.lower())

9. Conversia șirurilor

Există mai multe funcții pentru a converti un șir în diferit tipuri numerice, acestea sunt int(), float(), long() și altele. Funcția int() se transformă într-un număr întreg și float() într-un număr în virgulă mobilă:

str="10"
str2="20"
print(str+str2)
print(int(str)+int(str2))

10. Lungimea liniilor

Puteți utiliza funcțiile min(), max(), len() pentru a calcula numărul de caractere dintr-o linie:

str="Bine ați venit pe site-ul Lost"
print(min(str))
print(max(str))
print(len(str))

Prima arată dimensiunea minimă a caracterelor, a doua cea maximă, iar a treia lungimea totală a liniei.

11. Repetați peste un șir

Puteți accesa fiecare caracter al unui șir individual folosind o buclă for:

str="Bine ați venit pe site"
pentru i în interval(len(str)):
print(str[i])

Pentru a limita bucla, am folosit funcția len(). Acordați atenție indentării. Programarea Python se bazează pe aceasta, nu există paranteze pentru a organiza blocuri, doar indentare.

Operații cu numere

Numerele în Python sunt destul de ușor de declarat sau de utilizat în metode. Puteți crea numere întregi sau numere în virgulă mobilă:

num1 = 15
num2 = 3,14

1. Rotunjirea numerelor

Puteți rotunji un număr folosind funcția de rotunjire, trebuie doar să specificați câte cifre doriți să lăsați:

a=15,5652645
imprimare(rotund(a,2))

2. Generarea numerelor aleatorii

obține numere aleatorii puteți folosi modulul aleatoriu:

import aleatoriu
print(aleatoriu.aleatoriu())

În mod implicit, numărul este generat între 0,0 și 1,0. Dar vă puteți seta propriul interval:

import aleatoriu
numere=
print(aleatorie.aleatorie(numere))

Operatii cu data si ora

Limbajul de programare Python are un modul DateTime care vă permite să efectuați diferite operații cu data și ora:

import datetime
cur_date = datetime.datetime.now()
print(data_curta)
print(data_cur..an)
print(cur_date.day)
print(cur_date.weekday())
print(data_curta.luna)
print(cur_date.time())

Exemplul arată cum se extrage valoarea dorită dintr-un obiect. Puteți obține diferența dintre două obiecte:

import datetime
time1 = datetime.datetime.now()
time2 = datetime.datetime.now()
timediff = time2 - time1
print(timediff.microsecunde)

Puteți crea singur obiecte data cu o valoare arbitrară:

time1 = datetime.datetime.now()
time2 = datetime.timedelta(zile=3)
timp3=timp1+timp2
print(time3.date())

1. Formatarea datei și orei

Metoda strftime vă permite să schimbați formatul de dată și oră în funcție de formatul standard selectat sau specificat. Iată caracterele de formatare de bază:

  • %A- ziua săptămânii, denumire prescurtată;
  • %A- ziua săptămânii, numele complet;
  • %w- numărul zilei săptămânii, de la 0 la 6;
  • %d- ziua lunii;
  • %b- numele prescurtat al lunii;
  • %B- numele complet al lunii;
  • %m- numărul lunii;
  • %Y- numărul anului;
  • %H- ora zilei în format 24 de ore;
  • %l- ora zilei în format de 12 ore;
  • %p- AM sau PM;
  • %M- minut;
  • %S- al doilea.

import datetime
data1 = datetime.datetime.now()
print(data1.strftime("%d. %B %Y %I:%M%p"))

2. Creați o dată dintr-un șir

Puteți utiliza funcția strptime() pentru a crea un obiect dată dintr-un șir:

import datetime
date1=datetime.datetime.strptime ("2016-11-21", "%Y-%m-%d")
data2=datetime.datetime(an=2015, luna=11, ziua=21)
print(data1);
print(data2);

Operațiuni ale sistemului de fișiere

Gestionarea fișierelor este foarte ușoară în limbajul de programare Python, așa este cel mai bun limbaj pentru lucrul cu fișiere. Și, în general, putem spune că Python este cel mai simplu limbaj.

1. Copierea fișierelor

Pentru a copia fișiere trebuie să utilizați funcțiile din modulul subutil:

import shutil
cale_nouă = shutil.copy(„fișier1.txt”, „fișier2.txt”)

cale_nouă = shutil.copy(„fișier1.txt”, „fișier2.txt”, follow_symlinks=False)

2. Mutarea fișierelor

Mutarea fișierelor se face folosind funcția de mutare:

shutil.move(„fișier1.txt”, „fișier3.txt”)

Funcția de redenumire din modulul os vă permite să redenumiți fișierele:

import os
os.rename(„fișier1.txt”, „fișier3.txt”)

3. Citirea și scrierea fișierelor text

Puteți folosi funcții încorporate pentru a deschide fișiere și a citi sau scrie date în ele:

fd = deschide ("fișier1.txt")
continut = fd.read()
imprimare (conținut)

Mai întâi trebuie să deschideți fișierul pentru a funcționa folosind funcția de deschidere. Pentru a citi date dintr-un fișier, se folosește funcția de citire, textul citit va fi salvat într-o variabilă. Puteți specifica numărul de octeți care trebuie citiți:

fd = deschide ("fișier1.txt")
continut = fd.read(20)
imprimare (conținut)

Dacă fișierul este prea mare, îl puteți împărți în linii și îl puteți procesa astfel:

continut = fd.readlines()
imprimare (conținut)

Pentru a scrie date într-un fișier, acesta trebuie mai întâi deschis pentru scriere. Există două moduri de operare - suprascrierea și adăugarea la sfârșitul fișierului. Mod de înregistrare:

fd = deschide ("fișier1.txt","w")

Și adăugând la sfârșitul fișierului:

fd = deschide ("fișier1.txt","a")
content = fd.write(„Conținut nou”)

4. Crearea directoarelor

Pentru a crea un director utilizați funcția mkdir din modulul os:

import os
os.mkdir("./dosar nou")

5. Obținerea timpului de creație

Puteți folosi funcțiile getmtime(), getatime() și getctime() pentru a obține ultimele date modificate, accesate și create. Rezultatul va fi scos în format Unix, deci trebuie convertit într-o formă care poate fi citită:

import os
import datetime
tim=os.path.getctime("./file1.txt")
print(datetime.datetime.fromtimestamp(tim))

6. Lista de fișiere

Cu funcția listdir() puteți obține o listă de fișiere dintr-un folder:

import os
fișiere= os.listdir(".")
print(fisiere)

Pentru a rezolva aceeași problemă, puteți utiliza modulul glob:

import glob
files=glob.glob("*")
print(fisiere)

7. Serializarea obiectelor Python

import murat
fd = deschide ("fișierul meu.pk", "wb")
pickle.dump(mydata,fd)

Apoi, pentru a restabili obiectul, utilizați:

import murat
fd = deschide ("fișierul meu.pk", "rb")
mydata = pickle.load(fd)

8. Comprimarea fișierelor

Biblioteca standard Python vă permite să lucrați cu diferite formate de arhivă, de exemplu, zip, tar, gzip, bzip2. Pentru a vizualiza conținutul unui fișier utilizați:

import fișier zip
my_zip = zipfile.ZipFile("my_file.zip", mode="r")
print(file.namelist())

Si pentru crearea zipului Arhiva:

import fișier zip
file=zipfile.ZipFile("files.zip","w")
file.write("fișier1.txt")
file.close()

De asemenea, puteți despacheta arhiva:

import fișier zip
file=zipfile.ZipFile("fișiere.zip","r")
fisier.extractall()
file.close()

Puteți adăuga fișiere în arhivă astfel:

import fișier zip
file=zipfile.ZipFile("files.zip","a")
file.write("fișier2.txt")
file.close()

9. Analizarea fișierelor CSV și Excel

Folosind modulul Pandas, puteți vizualiza și analiza conținutul tabelelor CSV și Excel. Mai întâi trebuie să instalați modulul folosind pip:

sudo pip install panda

Apoi, pentru a analiza, tastați:

importa panda
data=pandas.read_csv("fișier.csv)

În mod implicit, Pandas utilizează prima coloană pentru titlurile fiecărui rând. Puteți specifica o coloană pentru index folosind parametrul index_col sau puteți specifica False dacă nu este necesar. Pentru a scrie modificări într-un fișier, utilizați funcția to_csv:

data.to_csv("fișier.csv)

Puteți analiza fișierul Excel în același mod:

date = pd.read_excel ("fișier.xls", sheetname="Sheet1")

Dacă trebuie să deschideți toate tabelele, utilizați:

date = pd.ExcelFile("fișier.xls")

Apoi puteți scrie toate datele înapoi:

data.to_excel("file.xls", sheet="Sheet1")

Rețea în Python

Programarea Python 3 implică adesea crearea de rețele. Biblioteca standard Python include capabilități de socket pentru acces la rețea de nivel scăzut. Acest lucru este necesar pentru a accepta mai multe protocoale de rețea.

priză de import
gazdă = „192.168.1.5”
port = 4040
my_sock = socket.create_connection((gazdă, port))

Acest cod se conectează la portul 4040 de pe mașina 192.168.1.5. Când soclul este deschis, puteți trimite și primi date:

my_sock.sendall(b"Bună ziua, lume")

Trebuie să scriem caracterul b înainte de linie, deoarece trebuie să transferăm date în modul binar. Dacă mesajul este prea mare, puteți repeta:

msg = b"Mesajul mai lung ajunge aici"
mesglen = len(msg)
total = 0
în timp ce totală< msglen:
trimis = my_sock.send(msg)
total = total + trimis

Pentru a primi date, trebuie să deschideți și socket-ul, dar utilizați metoda my_sock_recv:

data_in = my_sock.recv(2000)

Aici indicăm câte date trebuie primite - 20000, datele nu vor fi transferate la variabilă până când nu au fost primiți 20000 de octeți de date. Dacă mesajul este mai mare, atunci pentru a-l primi trebuie să creați o buclă:

buffer = bytearray(b" " * 2000)
my_sock.recv_into(buffer)

Dacă memoria tampon este goală, mesajul primit va fi scris acolo.

Lucrul cu poșta

Biblioteca standard Python vă permite să primiți și să trimiteți mesaje de e-mail.

1. Primirea e-mailurilor de la un server POP3

Pentru a primi mesaje pe care le folosim Server POP:

import getpass, poplib
pop_serv = poplib.POP3("192.168.1.5")
pop_serv.user(„utilizatorul meu”)
pop_serv.pass_(getpass.getpass())

Modulul getpass vă permite să obțineți parola utilizatorului într-un mod sigur, astfel încât să nu fie afișată pe ecran. Dacă serverul POP utilizează o conexiune securizată, trebuie să utilizați clasa POP3_SSL. Dacă conexiunea are succes, puteți interacționa cu serverul:

msg_list = pop_serv.list() # pentru a lista mesajele
msg_count = pop_serv.msg_count()

Pentru a termina lucrarea utilizați:

2. Primirea e-mailurilor de la serverul IMAP

Pentru a vă conecta și a lucra cu serverul IMAP, utilizați modulul imaplib:

import imaplib, getpass
my_imap = imaplib.IMAP4 ("imap.server.com")
my_imap.login ("utilizatorul meu", getpass.getpass())

Dacă ale tale Server IMAP folosește o conexiune sigură, trebuie să utilizați clasa IMAP4_SSL. Pentru a obține o listă de mesaje utilizați:

date = my_imap.search(Niciunul, „ALL”)

Puteți apoi să parcurgeți lista selectată și să citiți fiecare mesaj:

msg = my_imap.fetch(email_id, "(RFC822)")

Dar, nu uitați să închideți conexiunea:

my_imap.close()
my_imap.logout()

3. Trimiterea e-mailului

Folosit pentru a trimite mail protocol SMTPși modulul smtplib:

import smtplib, getpass
my_smtp = smtplib.SMTP(smtp.server.com")
my_smtp.login ("utilizatorul meu", getpass.getpass())

Ca și înainte, utilizați SMTP_SSL pentru o conexiune sigură. Când conexiunea este stabilită, puteți trimite un mesaj:

from_addr = " [email protected]"
to_addr = " [email protected]"
msg = "De la: [email protected]\r\nCătre: [email protected]\r\n\r\nBună ziua, acesta este un mesaj de testare"
my_smtp.sendmail(from_addr, to_addr, msg)

Lucrul cu pagini web

Programarea Python este adesea folosită pentru a scrie diverse scripturi pentru lucrul cu web-ul.

1. Crawling pe web

Modulul urllib vă permite să interogați paginile web într-o varietate de moduri. Pentru a trimite o solicitare obișnuită, utilizați clasa de solicitare. De exemplu, să efectuăm o solicitare normală de pagină:

import urllib.request
my_web = urllib.request.urlopen("https://www.google.com")
print(my_web.read())

2. Folosind metoda POST

Dacă trebuie să trimiteți un formular web, trebuie să utilizați cerere GET, și POST:

import urllib.request
mydata = b"Datele dvs. ajung aici"
my_req = urllib.request.Request("http://localhost", data=mydata,method="POST")
my_form = urllib.request.urlopen(my_req)
print(my_form.status)

3. Creați un server web

Folosind clasa Socket, puteți accepta conexiuni de intrare, ceea ce înseamnă că puteți crea un server web cu capabilități minime:

priză de import
gazdă = ""
port = 4242
serverul_meu = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
my_server.bind((gazdă, port))
my_server.listen(1)

Când serverul este creat. puteți începe să acceptați conexiuni:

addr = my_server.accept()
print("Conectat de la gazdă", adresa)
date = conn.recv(1024)

Și nu uitați să închideți conexiunea:

Multithreading

Ca majoritatea limbile moderne Python vă permite să rulați mai multe fire paralele, ceea ce poate fi util atunci când trebuie să efectuați calcule complexe. ÎN bibliotecă standard Există un modul de threading care conține clasa Therad:

import threading
def print_message():
print("Mesajul a fost tipărit dintr-un fir diferit")
my_thread = threading.Thread(target=print_message)
my_thread.start()

Dacă funcția rulează prea mult timp, puteți verifica dacă totul este ok folosind funcția is_alive(). Uneori, firele dvs. trebuie să acceseze resurse globale. Încuietorile sunt folosite pentru aceasta:

import threading
num = 1
my_lock = threading.Lock()
def my_func():
num global, my_lock
my_lock.acquire()
suma = num + 1
print(suma)
my_lock.release()
my_thread = threading.Thread(target=my_func)
my_thread.start()

concluzii

În acest articol, am acoperit elementele de bază ale programării Python. Acum cunoașteți cele mai multe dintre funcțiile utilizate frecvent și le puteți utiliza în dvs programe mici. Vă va plăcea să programați în Python 3, este foarte ușor! Dacă aveți întrebări, întrebați în comentarii!

Pentru a încheia articolul, există o prelegere excelentă despre Python:

Selecția a fost pregătită ținând cont experienta personala programatori practicanți. Iată cărți potrivite atât pentru începători, cât și pentru cei cu o anumită bază de dezvoltatori. Adevărat, pentru cei care nu au cunoștințe de limbă absolut zero, vă sfătuim să parcurgeți mai întâi WikiBooks, să explorați elementele de bază și apoi să alegeți din listă.

Learning Python, Mark Lutz (ediția a 5-a)

Cel mai frecvent răspuns la întrebarea: „ce ar trebui să citesc despre Python?” Super carte, într-adevăr ghid complet după limbă (și parțial prin biblioteca standard). Dezavantajul este că este multă apă, iar ultima ediție a fost publicată acum 2 ani (aproape 3) și deci nu include ultimele modificari. Dar pentru începători cartea este încă relevantă.

Programare Python (ediția a 4-a) de Mark Lutz

Trecerea de la studiu la practică. Învățăm să aplicăm cunoștințele dobândite pentru a scrie programe viitoare.

Gândiți-vă la Python: Cum să gândiți ca un informatician, Allen B. Downey

Introducere în Python pentru începători. Cartea dezvăluie în mod constant trăsăturile limbii. Subiecte ample, cum ar fi recursiunea și bazate pe obiecte programare orientată Pentru a fi mai ușor de înțeles, acestea sunt împărțite în pași mici. Site-ul cărții are module interactive încorporate în care vă puteți rula codul.

Dive Into Python / , Mark Pilgrim

Ghid rapid cu o cantitate mare exemple de cod și utilizarea bibliotecii standard. Această carte a fost descrisă de mulți recenzenți drept o excelentă introducere în Python.

Programare Python

Partea 1. Capacități lingvistice și sintaxa de bază

Seria de conținut:

Merită să înveți Python?

Python este unul dintre cele mai populare limbaje de programare moderne. Este potrivit pentru rezolvarea unei varietăți de probleme și oferă aceleași capacități ca și alte limbaje de programare: dinamism, suport OOP și cross-platform. Dezvoltarea lui Python a început de Guido Van Rossum la mijlocul anilor 1990, astfel încât până acum a fost posibil să scăpăm de bolile standard din „copilărie” și să se dezvolte semnificativ. cele mai bune părțiși atrage mulți programatori care folosesc Python pentru a-și implementa proiectele.

Mulți programatori cred că este necesar să învețe doar limbaje de programare „clasice”, cum ar fi Java sau C++, deoarece alte limbaje nu vor oferi oricum aceleași capacități. Cu toate acestea, recent a apărut convingerea că este indicat ca un programator să cunoască mai mult de o limbă, deoarece acest lucru îi lărgește orizonturile, permițându-i să rezolve mai creativ problemele și sporindu-și competitivitatea pe piața muncii.

Învățarea perfectă a două limbi precum Java și C++ este destul de dificilă și ar dura mult timp; în plus, multe aspecte ale acestor limbi se contrazic. În același timp, Python este ideal pentru rolul unei a doua limbi, deoarece este absorbit imediat datorită cunoștințelor deja existente despre OOP și faptului că capacitățile sale nu intră în conflict, ci completează experiența dobândită din lucrul cu o altă programare. limba.

Dacă un programator este abia la început în domeniul dezvoltării software, atunci Python va fi un limbaj de programare „introductiv” ideal. Datorită conciziei sale, vă va permite să stăpâniți rapid sintaxa limbii, iar absența „moștenirii” sub formă de axiome formate de-a lungul multor ani vă va ajuta să stăpâniți rapid OOP. Datorită acestor factori, curba de învățare pentru Python va fi destul de scurtă, iar programatorul va putea trece de la exemple educaționale la proiecte comerciale.

Prin urmare, indiferent cine este cititorul acestui articol - un programator cu experiență sau un începător în domeniul dezvoltării software, răspunsul la întrebarea, care este titlul acestei secțiuni, ar trebui să fie un „da”.

Această serie de articole este concepută pentru a vă ajuta să depășiți cu succes curba de învățare, oferind în mod constant informații, începând cu cel mai principii de baza limbajului la capacitățile sale avansate în ceea ce privește integrarea cu alte tehnologii. Primul articol va discuta principalele caracteristici și Sintaxa Python. În viitor, vom analiza aspecte mai complexe ale lucrului cu acest limbaj popular, în special orientat pe obiecte programare în Python.

Arhitectura Python

Orice limbaj, fie pentru programare, fie pentru comunicare, constă din cel puțin două părți - vocabular și sintaxă. Limbajul Python este organizat exact în același mod, oferind sintaxa pentru formarea expresiilor care formează programe executabile, și un dicționar – un set de funcționalități sub forma unei biblioteci standard și plug-in-uri.

După cum am menționat, sintaxa lui Python este destul de concisă, mai ales în comparație cu Java sau C++. Pe de o parte, acest lucru este bun, deoarece cu cât sintaxa este mai simplă, cu atât este mai ușor de învățat și cu atât mai mult mai putine greseli se poate face în timpul utilizării acestuia. Cu toate acestea, astfel de limbi au un dezavantaj - pot fi folosite pentru a transmite cele mai simple informații și nu pot exprima structuri complexe.

Acest lucru nu se aplică pentru Python, deoarece este un limbaj simplu, dar simplificat. Cert este că Python este un limbaj cu mai multe nivel inalt abstractizare, mai mare, de exemplu, decât Java și C++ și vă permite să transmiteți aceeași cantitate de informații într-o cantitate mai mică de cod sursă.

Python este, de asemenea, un limbaj de uz general, astfel încât poate fi folosit în aproape orice domeniu al dezvoltării software (autonom, client-server, aplicații web) și în orice domeniul subiectului. În plus, Python se integrează ușor cu componentele existente, permițându-vă să încorporați Python în aplicațiile pe care le-ați scris deja.

O altă componentă a succesului Python este modulele sale de extensie, atât standard, cât și specifice. Modulele standard de extensie Python sunt funcționalități bine concepute și testate în timp pentru a rezolva problemele care apar în fiecare proiect de dezvoltare software, procesare șiruri și text, interacțiune cu sistemul de operare și suport pentru aplicații Web. Aceste module sunt, de asemenea, scrise în Limbajul Python, prin urmare, au cea mai importantă proprietate a sa - cross-platform, permițându-vă să transferați fără durere și rapid proiecte de la un sistem de operare la altul.

Dacă funcționalitatea necesară nu se află în biblioteca standard Python, vă puteți crea propriul modul de extensie pentru o utilizare repetată ulterioară. Este demn de remarcat aici că modulele de extensie pentru Python pot fi create nu numai în limbajul Python în sine, ci și folosind alte limbaje de programare. În acest caz, este posibilă implementarea mai eficientă a sarcinilor care consumă mult resurse, cum ar fi calcule științifice complexe, dar avantajul multiplatformelor este pierdut dacă limbajul modulului de extensie nu este el însuși multiplatform, precum Python.

Timpul de rulare Python

După cum știți, toate limbajele de programare multiplatformă sunt construite pe același model: este un cod sursă cu adevărat portabil și un mediu de rulare, care nu este portabil și specific fiecărei platforme specifice. Acest mediu de execuție include de obicei un interpret care execută codul sursă și diverse utilități necesare întreținerii aplicației - un depanator, un asamblator invers etc.

Mediul de rulare Java include, de asemenea, un compilator, deoarece codul sursă trebuie compilat în bytecode pentru mașina virtuală Java. Runtime-ul Python conține doar un interpret, care este și un compilator, dar compilează codul sursă Python direct în Codul mașinii platforma tinta.

Pe acest moment Există trei implementări de rulare binecunoscute pentru Python: CPython, Jython și Python.NET. După cum puteți ghici din nume, primul mediu este implementat în C, al doilea în limbajul Java, iar acesta din urmă se află pe platforma .NET.

Runtime-ul CPython este de obicei numit pur și simplu Python, iar când oamenii vorbesc despre Python, se referă cel mai adesea la această implementare. Această implementare constă dintr-un interpret și module de extensie scrise în C și poate fi utilizată pe orice platformă pentru care este disponibil un compilator C standard versiuni diferite OS Windows și diverse distribuții Linux. În acest articol și în articolele ulterioare, CPython va fi luat în considerare, dacă nu se specifică altfel separat.

Runtime-ul Jython este o implementare Python cu care se poate lucra mașină virtuală Java(JVM). Orice versiune JVM este acceptată, începând cu versiunea 1.2.2 (actuală Versiunea Java– 1.6). Pentru a lucra cu Jython, aveți nevoie de o mașină Java instalată (mediu de rulare Java) și anumite cunoștințe ale limbajului Programare Java. Nu este necesar să știți să scrieți codul sursă în Java, dar va trebui să vă ocupați de fișiere JAR și applet-uri Java, precum și de documentație în format JavaDOC.

Ce versiune de mediu să alegeți depinde numai de preferințele programatorului, în general, se recomandă să păstrați atât CPython, cât și Jython pe computer, deoarece nu intră în conflict unul cu celălalt, ci se completează reciproc. Mediul CPython este mai rapid deoarece nu există un strat intermediar sub forma unui JVM; In afara de asta, versiuni actualizate Python este lansat pentru prima dată ca mediu CPython. Cu toate acestea, Jython poate folosi orice clasă Java ca modul de extensie și poate rula pe orice platformă pentru care există o implementare JVM.

Ambele medii de execuție sunt lansate sub o licență compatibilă cu binecunoscuta licență GPL, astfel încât acestea pot fi folosite atât pentru dezvoltarea de software comercial, cât și gratuit. Majoritatea extensiilor Python sunt, de asemenea, licențiate GPL și pot fi utilizate liber în orice proiect, dar există și extensii comerciale sau extensii cu licențe mai stricte. Prin urmare, când folosind PythonÎntr-un proiect comercial, trebuie să știți ce restricții există în licențele de extensie pentru plug-in.

Începeți cu Python

Înainte de a începe să utilizați Python, trebuie să instalați mediul său de execuție - în acest articol acesta este CPython și, în consecință, interpretul Python. Exista diferite căi setari: utilizatori experimentați pot compila ei înșiși Python din codul sursă disponibil public sau puteți descărca altele gata făcute de pe site-ul web www.python.org fișiere executabile pentru un anumit sistem de operare și, în sfârșit, multe distribuții Linux vin cu un interpret Python deja preinstalat. Acest articol folosește versiunea Windows a Python 2.x, dar exemplele prezentate pot fi executate pe orice versiune de Python.

După ce programul de instalare implementează executabilul Fișiere Python V directorul specificat, trebuie să verificați valorile următoarelor variabile de sistem:

  • CALE. Această variabilă trebuie să conțină calea către directorul în care este instalat Python, astfel încât să poată fi găsită de sistem de operare.
  • PYTHONHOME. Această variabilă ar trebui să conțină numai calea către directorul în care este instalat Python. Acest director ar trebui să conțină și un subdirector lib care va fi căutat pentru module standard Python.
  • PYTHONPATH. O variabilă cu o listă de directoare care conțin module de extensie care vor fi conectate la Python (elementele listei trebuie separate printr-un delimitator de sistem).
  • PYTHONSTARTUP. O variabilă opțională care specifică calea către scriptul Python care ar trebui să fie executată de fiecare dată când este pornită o sesiune de interpret Python interactiv.

Linia de comandă pentru lucrul cu interpretul are următoarea structură.

PYTHONHOME\python (opțiuni) [ -c comandă | fișier script | - ] (argumente)

Modul interactiv Python

Dacă porniți interpretul fără a specifica o comandă sau un fișier script, acesta va porni în modul interactiv. În acest mod, este lansat un shell special Python în care pot fi introduse comenzi sau expresii individuale, iar valoarea lor va fi calculată imediat. Este foarte convenabil în timpul învățarea Python-ului, deoarece puteți verifica imediat corectitudinea unui anumit design.

Valoarea expresiei evaluate este stocată într-o variabilă specială numită Single Underscore (_), astfel încât să poată fi utilizată în expresiile ulterioare. Puteți încheia o sesiune interactivă folosind comanda rapidă de la tastatură Ctrl–Z pe Windows sau Ctrl–D pe Linux.

Opțiunile sunt valori opționale de șir care pot schimba comportamentul interpretului în timpul unei sesiuni; semnificația lor va fi discutată în acest articol și în articolele ulterioare. Opțiunile specifică fie o comandă specifică care urmează să fie executată de interpret, fie calea către un fișier care conține scriptul care urmează să fie executat. Este de remarcat faptul că o comandă poate consta din mai multe expresii, separate prin punct și virgulă, și trebuie să fie cuprinsă între ghilimele pentru ca sistemul de operare să o poată transmite corect interpretului. Argumentele sunt acei parametri care sunt trecuți pentru procesarea ulterioară scriptului executabil; sunt transmise programului ca șiruri de caractere și separate prin spații.

Pentru a verifica dacă Python este instalat corect și funcționează corect, puteți rula următoarele comenzi:

c:\>python-v
c:\> python –c „timpul de import; print time.asctime()”

Opțiunea -v tipărește versiunea implementării Python utilizată și iese, în timp ce a doua comandă tipărește pe ecran valoarea timpului de sistem.

Puteți scrie scripturi Python în orice editor de text, deoarece sunt obișnuite fișiere text, cu toate acestea, există și medii de dezvoltare speciale concepute pentru a funcționa cu Python.

Noțiuni de bază despre sintaxa Python

Scripturile de cod sursă Python constau din așa-numitele șiruri logice, dintre care fiecare constă la rândul său din linii fizice. Simbolul # este folosit pentru a indica comentarii. Comentarii și linii goale interpretul o ignoră.

Următorul este un foarte aspect important, care poate părea ciudat pentru programatorii care învață Python ca al doilea limbaj de programare. Cert este că în Python nu există niciun simbol care să fie responsabil pentru separarea expresiilor una de cealaltă în codul sursă, cum ar fi punctul și virgulă (;) în C++ sau Java. Un punct și virgulă vă permite să separați mai multe instrucțiuni dacă acestea sunt pe aceeași linie fizică. De asemenea, nu există nicio construcție, cum ar fi acolade (), care vă permite să combinați un grup de instrucțiuni într-un singur bloc.

Liniile fizice sunt separate prin caracterul de sfârșit de linie în sine, dar dacă expresia este prea lungă pentru o linie, atunci cele două linii fizice pot fi combinate într-o singură linie logică. Pentru a face acest lucru, trebuie să introduceți un caracter bară oblică inversă (\) la sfârșitul primei rânduri, apoi rândul următor interpretul o va interpreta ca o continuare a primei, dar în acest caz este imposibil ca prima linie să conțină alte simboluri după simbolul \, de exemplu, un comentariu cu #. Numai indentarea este folosită pentru a evidenția blocurile de cod. Liniile logice cu aceeași dimensiune a indentației formează un bloc, iar blocul se termină când apare o linie logică cu indentare dimensiune mai mică. Acesta este motivul pentru care prima linie a unui script Python nu ar trebui să fie indentată. Stăpânirea acestor reguli simple te va ajuta să eviți majoritatea greșelilor asociate cu învățarea unei noi limbi.

Nu există alte diferențe radicale în sintaxa Python față de alte limbaje de programare. Disponibil set standard operatori şi Cuvinte cheie, dintre care majoritatea sunt deja familiare programatorilor, iar cele specifice Python vor fi discutate în acest articol și în articolele următoare. Regulile standard sunt, de asemenea, utilizate pentru specificarea identificatorilor de variabile, metode și clase - numele trebuie să înceapă cu o liniuță de subliniere sau un caracter latin de orice caz și nu poate conține caracterele @, $, %. De asemenea, un singur caracter de subliniere nu poate fi folosit ca identificator (vezi nota de subsol care vorbește despre modul interactiv de operare).

Tipuri de date utilizate în Python

Tipurile de date utilizate în Python sunt, de asemenea, aceleași cu alte limbi - tipuri de date întregi și reale; În plus, este acceptat un tip de date complex - cu o parte reală și imaginară (un exemplu de astfel de număr este 1,5J sau 2j, unde J reprezintă Rădăcină pătrată de la -1). Python acceptă șiruri care pot fi incluse între ghilimele simple, duble sau triple, iar șirurile, precum Java, sunt obiecte imuabile, de exemplu. nu își pot schimba valoarea după creare.

Disponibil în Python și tip boolean date bool cu ​​două opțiuni de valoare – Adevărat și Fals. Cu toate acestea, în versiunile mai vechi de Python nu exista un astfel de tip de date și, în plus, orice tip de date putea fi turnat la valoarea booleană True sau False. Toate numerele diferite de zero și șirurile de caractere nevide sau colecțiile de date au fost tratate ca adevărate, iar valorile goale și zero au fost tratate ca false. Această caracteristică a fost păstrată în noile versiuni de Python, cu toate acestea, pentru a crește lizibilitatea codului, se recomandă să o utilizați pentru tip variabil bool. În același timp, dacă este necesar să se întrețină compatibil invers Cu implementările Python mai vechi, ar trebui să utilizați 1 (adevărat) sau 0 (fals) ca variabile booleene.

Funcționalitate pentru lucrul cu seturi de date

Python definește trei tipuri de colecții pentru stocarea seturilor de date:

  • tuplu (tuplu);
  • lista(lista);
  • dicţionar.

Un tuplu este o secvență ordonată imuabilă de date. Poate conține elemente tipuri variate, de exemplu alte tupluri. Un tuplu este definit în paranteze, iar elementele sale sunt separate prin virgule. O funcție specială încorporată, tuple(), vă permite să creați tupluri dintr-o anumită secvență de date.

O listă este o secvență de elemente mutabilă, ordonată. Elementele listei sunt, de asemenea, separate prin virgule, dar sunt specificate în paranteza patrata. Pentru a crea liste, este propusă funcția list().

Un dicționar este un tabel hash care stochează un element împreună cu cheia sa de identificare. Accesul ulterior la elemente se realizează și prin cheie, astfel încât unitatea de stocare dintr-un dicționar este o pereche obiect-cheie și un obiect valoare asociat. Un dicționar este o colecție mutabilă, dar neordonată, astfel încât ordinea elementelor din dicționar se poate schimba în timp. Dicționarul este setat în acolade, cheia este separată de valoare prin două puncte, iar perechile cheie/valoare sunt separate prin virgulă. Funcția dict() este disponibilă pentru crearea dicționarelor.

Lista 1 prezintă exemple ale diferitelor colecții disponibile în Python.

Listarea 1. Tipuri de colecții disponibile în Python
('w','o','r','l','d') # tuplu de cinci elemente (2.62,) # tuplu de un element [„test”, „me”] # listă de două elemente # lista goala( 5:'a', 6:'b', 7:'c' ) # dicționar de trei elemente cu chei de tip int

Definirea funcțiilor în Python

Deși Python acceptă OOP, multe dintre caracteristicile sale sunt implementate ca funcții separate; În plus, modulele de extensie sunt cel mai adesea realizate sub forma unei biblioteci de funcții. Funcțiile sunt folosite și în clase, unde sunt denumite în mod tradițional metode.

Sintaxa pentru definirea funcțiilor în Python este extrem de simplă; ținând cont de cerințele de mai sus:

def FUNCTION_NAME(parametri): expresia nr. 1 expresia nr. 2 ...

După cum puteți vedea, este necesar să folosiți cuvântul funcție def, două puncte și indentare. Apelarea unei funcții este, de asemenea, foarte simplă:

FUNCTION_NAME(parametri)

Există doar câteva lucruri specifice Python de luat în considerare. Ca și în Java, valorile primitive sunt transmise după valoare (o copie a parametrului este transmisă funcției și nu poate schimba valoarea setată înainte de apelarea funcției), iar tipurile de obiecte complexe sunt transmise prin referință (o referință este a trecut la funcție și poate schimba obiectul).

Parametrii pot fi trecuți fie prin ordinea de listare, fie după nume în acest caz, nu trebuie să specificați atunci când apelați acei parametri pentru care există valori implicite, ci să treceți doar pe cei obligatorii sau să modificați ordinea parametrilor la apelarea unei funcții:

#funcție care efectuează împărțirea întregului - folosind operatorul // def foo(delimoe, delitel): return delimoe // delitel print divide(50,5) # rezultatul muncii: 10 print divide(delitel=5, delimoe=50) # rezultatul funcționează: 10

O funcție din Python trebuie să returneze o valoare - acest lucru se face fie în mod explicit cu o instrucțiune return urmată de valoarea returnată, fie, în absența unei instrucțiuni return, constanta None este returnată când se ajunge la sfârșitul funcției. După cum puteți vedea din exemplele de declarații ale funcției, în Python nu este nevoie să specificați dacă ceva este returnat de la o funcție sau nu, dar dacă o funcție are o instrucțiune return care returnează o valoare, atunci alte instrucțiuni return din acea funcție trebuie să returneze valori, iar dacă o astfel de valoare nu, atunci trebuie să specificați în mod explicit return None.

Dacă funcția este foarte simplă și constă dintr-o singură linie, atunci ea poate fi definită chiar în punctul de utilizare în Python, o astfel de construcție se numește funcție lambda. O funcție lambda este o funcție anonimă (fără nume propriu), al cărei corp este o instrucțiune return care returnează valoarea unei expresii. Această abordare poate fi convenabilă în unele situații, dar merită remarcat faptul că reutilizare funcții similare imposibil („unde s-a născut, acolo a venit la îndemână”).

De asemenea, merită să descriem atitudinea lui Python față de utilizarea recursiunii. În mod implicit, adâncimea recursiunii este limitată la 1000 de niveluri, iar când acest nivel este trecut, o excepție va fi ridicată și programul se va opri. Cu toate acestea, dacă este necesar, valoarea acestei limite poate fi modificată.

Există mai multe funcții în Python caracteristici interesante, cum ar fi documentația sau capacitatea de a defini funcții imbricate, dar acestea vor fi acoperite în articolele ulterioare din serie cu exemple mai complexe.

Instrucțiuni pas cu pas pentru oricine dorește să învețe programarea Python (sau programarea în general), dar nu știe să facă primul pas, au fost prezentate de site-ul proglib.io.

Ce să fac?

Ne-am uitat printr-o mulțime de materiale de instruire și doar articole buneși a făcut o listă cu ceea ce trebuie să înveți pentru a stăpâni acest limbaj de programare și a te dezvolta în el.

  1. Învață mai întâi elementele de bază. Aflați ce sunt variabilele, structurile de control, structurile de date. Aceste cunoștințe sunt necesare fără a fi legate de un anumit limbaj.
  2. Începe să studiezi literatura. Începeți cu clasicul - Scufundați-vă în Python. Această carte poate deveni de fapt o carte de referință. Puteți citi și Michael Dawson „Programare în Python” și Alexey Vasiliev „Python cu exemple. Curs practic de programare.” Dawson este un programator și profesor cu experiență, iar în carte predă programarea prin creare jocuri simple. În cartea lui Vasiliev, dimpotrivă, se acordă mai multă atenție fundamentelor și teoriei.
  3. Practică. Puteți (și ar trebui) să faceți acest lucru în paralel cu studiul teoriei. Urmați cursul Learn Python pe Codecademy: toată teoria de care aveți nevoie pentru a finaliza temele este predată chiar în timpul sarcinilor. Alternativ, puteți vizita Pythontutor - este gratuit. curs interactivîn Python în rusă.
    De asemenea este si cursuri bune pe Stepik: Python: Baze și aplicații.
  4. Urmați cursul Introducere în informatică și programare Python de la MIT.
  5. Aflați ce biblioteci și instrumente folosesc alți Pythonists și în ce scopuri. Găsește ceva interesant pentru tine.
  6. Dacă sunteți interesat de tehnologiile web, acordați atenție cadrelor Flask și Django. Aflați în ce scopuri care este mai potrivit, începeți să studiați pe cel care vi se potrivește.
  7. Aflați cum să obțineți și să analizați cantități masive de date de pe site-uri individuale, de pe întregul Internet și de oriunde altundeva - asigurați-vă că respectați legea.
  8. Căutați informații despre metodele de învățare automată.
  9. Optimizați munca cu instrumente, automatizați rutina și tot ceea ce nu este încă automatizat.

Unde să mergem?

Mai multe link-uri utile către resurse care vă vor ajuta puțin mai puțin pe Google și vă vor decide în ce direcție să lucrați.

Resurse utile

Tutor Python

Acest instrument vă ajută să depășiți o barieră fundamentală în înțelegerea limbajului de programare pe care îl învățați: prin vizualizarea codului, această resursă oferă o perspectivă asupra a ceea ce se întâmplă pe măsură ce computerul execută fiecare linie de cod.

Bucky Roberts pe YouTube

Dacă nu sunteți familiarizat cu programarea, aceste tutoriale vă vor ajuta foarte mult. Sunt ușor de înțeles și acoperă tot ceea ce ai putea avea nevoie mai întâi, începând cu setarea limbii.

Derek Banas pe Python pe YouTube

Derek este un programator autodidact și are propria sa abordare a învățării limbajelor de programare. Face scurte recenzii video în diverse limbi, de 40-60 de minute, în care spune tot ce trebuie să schiță generalăînțelege scopul limbajului.

Corey Schafer pe YouTube

a lui Corey videoclipuri bune despre formatarea șirurilor, generatoare, termeni de programare (combinații și permutări, DRY, închideri) și multe altele pentru a vă ajuta să înțelegeți conceptele de bază.

Django Noțiuni de bază

Documentație oficială pentru cadrul web Django. Acoperă tot ce trebuie să știți când începeți, de la configurare până la prima aplicație.

Introducere în Flask

Un curs video pe YouTube pentru cei care doresc să se familiarizeze cu Flask, să înțeleagă unele dintre complexitățile sale și să afle de ce este nevoie de el.