Metode
Metodele pe obiecte sunt funcții atașate clasei obiectului; sintaxa
este, pentru metode și funcții normale, zahăr sintactic pentru
instance.method(argument)
. Metodele Python au un parametru de explicitate
Class.method(instance,
argument)self
pentru a accesa datele instanței, spre deosebire de self
implicit (sau this
) în alte limbaje de programare orientate pe obiecte (de exemplu, C++, Java, Objective-C sau Ruby).
Tip
Python folosește duck typing (traducere: tipul rață) și are obiecte pe tipuri, dar nume de variabile fără tipuri. Constrângerile de tip nu sunt verificate la compilare; mai degrabă, operațiile asupra unui obiect pot eșua, ceea ce înseamnă că obiectul dat nu este de un tip adecvat. În ciuda faptului că este tip dinamic, Python este un tip puternic, interzicând operațiunile care nu sunt bine definite (de exemplu, adăugând un număr într-un șir), mai degrabă decât încercând în tăcere să le dea sens.
Python permite programatorilor să-și definească propriile tipuri folosind clase, care sunt cel mai des utilizate pentru programarea orientată pe obiecte. Noi instanțe de clase sunt construite apelând clasa (de exemplu,
sau
SpamClass()
), iar clasele sunt instanțe de tip metaclasă (în sine o instanță de sine), permițând metaprogramarea și reflexia.
EggsClass()
Înainte de versiunea 3.0, Python avea două tipuri de clase: stil vechi și stil nou. Sintaxa ambelor stiluri este aceeași, diferența fiind dacă clasa object
este cea de la care se moștenește, direct sau indirect (toate clasele de stil nou moștenesc de la object
și sunt instanțe de tip). În versiunile Python 2 de la Python 2.2 și mai departe, pot fi utilizate ambele tipuri de clase. Clasele în stil vechi au fost eliminate în Python 3.0.
Planul pe termen lung este de a sprijini tipul gradual și din Python 3.5, sintaxa limbajului permite specificarea tipurlor statice, dar acestea nu sunt verificate în implementarea implicită, CPython. Un verificator de tip static opțional experimental numit mypy acceptă verificarea tipului în timpul compilării.
Tip | Mutabilitate | Descriere | Exemple sintaxă |
---|---|---|---|
bool |
imutabil | Valoare booleană |
|
bytearray |
mutabil | Secvența de octeți |
|
bytes |
imutabil | Secvența de octeți |
|
complex |
imutabil | Număr complex cu părți reale și imaginare |
|
dict |
mutabil | Matrice asociativă (sau dicționar) de perechi de chei și valori; poate conține tipuri mixte (chei și valori), cheile trebuie să fie de tip hashabil |
|
ellipsis (a) |
imutabil | Un substituent de puncte de suspensie pentru a fi utilizat ca index în matricele NumPy |
|
float |
imutabil | Număr cu virgulă mobilă de precizie dublă. Precizia depinde de mașină, dar în practică este în general implementată ca un număr IEEE 754 pe 64 de biți cu 53 de biți de precizie. |
|
frozenset |
imutabil | Set neordonat, nu conține duplicate; poate conține tipuri mixte, dacă este hashabil |
|
int |
imutabil | Întreg de magnitudine nelimitată |
|
list |
mutabil | Listă, poate conține tipuri mixte |
|
NoneType a |
imutabil | Un obiect care reprezintă absența unei valori, adesea numit nul în alte limbaje. |
|
NotImplementedType a |
imutabil | Un substituent care poate fi returnat de la operatori supraîncărcați pentru a indica tipurile operandi neacceptate. |
|
range |
imutabil | O secvență de numere utilizate în mod obișnuit pentru a bucla un număr specific de ori bucle for |
|
set |
mutabil | Set neordonat, nu conține duplicate; poate conține tipuri mixte, dacă este hashabil |
|
str |
imutabil | Un șir de caractere: secvența punctelor de cod Unicode |
"""Spanning
multiple
lines"""
|
tuple |
imutabil | Poate conține tipuri mixte |
|
(a) Nu este accesibil direct pe nume
Operații aritmetice
Python are simbolurile obișnuite pentru operatorii aritmetici (+
, -
, *
, /
), operatorul //
și operația modulo %
(unde restul poate fi negativ, de ex. 4 %
). De asemenea, are
-3 == -2**
pentru exponențiere, de ex. 5**3 == 125
și 9**0.5 == 3.0
și un operator de multiplicare a matricei @
. Acești operatori funcționează ca în matematica tradițională; cu aceleași reguli de prioritate, operatorii infix (+ și – pot fi, de asemenea, unari pentru a reprezenta numere pozitive și, respectiv, negative).
Împărțirea între numere întregi produce rezultate în virgulă mobilă. Comportamentul diviziunii s-a schimbat semnificativ în timp:
- Python 2.1 și versiunile anterioare au folosit comportamentul diviziunii lui C. Operatorul
/
este diviziune întreagă dacă ambii operanzi sunt numere întregi, iar virgula mobilă se divide altfel. Diviziunea întregilor se rotunjește spre 0, de ex.
și
7/3
== 2
.
-7/3
== -2 - Python 2.2 a schimbat diviziunea întregilor pentru a rotunji spre infinit negativ, de ex.
7/3 == 2
și-7/3 == -3
. A fost introdus operatorul//
. Deci7//3 == 2
,
,
-7//3 == -37.5//3 == 2.0
și-7.5//3 == -3.0
. Adăugarea
face ca un modul să utilizeze regulile Python 3.0 pentru divizare (vezi următorul).
from __future__
import division - Python 3.0 a schimbat
/
să fie întotdeauna diviziune în virgulă mobilă, de ex.
.
5/2
== 2.5
În termeni Python, /
este diviziune adevărată (sau pur și simplu diviziune), și //
este diviziune parte întreagă. /
înainte de versiunea 3.0 este o diviziune clasică.
Rotunjirea către infinit negativ, deși diferită de majoritatea limbilor, adaugă consistență. De exemplu, înseamnă că ecuația
este întotdeauna adevărată. De asemenea, înseamnă că ecuația
(a +
b)//b
== a//b
+ 1
este valabilă atât pentru valorile pozitive, cât și pentru cele negative ale lui
b*(a//b)
+ a%b
== aa
. Cu toate acestea, menținerea validității acestei ecuații înseamnă că, deși rezultatul a%b
este, așa cum era de așteptat, în intervalul semi-deschis [0, b), unde b
este un număr întreg pozitiv, acesta trebuie să se afle în intervalul (b, 0] când b
este negativ.
Python oferă o funcție round
pentru rotunjirea unui punct flotant la cel mai apropiat număr întreg. Pentru egalitate, Python 3 folosește rotunjire la egal: round(1.5
și round(2.5)
ambele produc 2
. Versiuni înainte de 3 utilizau rotunjire-departe-de-zero: round(0.5)
este 1.0
, round(-0.5)
este −1.0
.
Python permite expresii booleene cu relații multiple de egalitate într-un mod care este în concordanță cu utilizarea generală în matematică. De exemplu, expresia a < b < c
testează dacă a
este mai mic decât b
și b
este mai mic decât c
. Limbajele derivate din C interpretează această expresie diferit: în C, expresia ar evalua mai întâi a < b
, rezultând 0 sau 1, iar acel rezultat ar fi apoi comparat cu c
.
Python folosește aritmetica de precizie arbitrară pentru toate operațiile întregi. Tipul / clasa Decimal
din modulul decimal
oferă numere zecimale în virgulă mobilă la o precizie arbitrară predefinită și mai multe moduri de rotunjire. Clasa Fraction
din modulul
oferă precizie arbitrară pentru numerele raționale.
fractions
Datorită bibliotecii de matematică extensivă a lui Python și a bibliotecii terță parte NumPy care extinde și mai mult capacitățile native, este frecvent utilizat ca limbaj științific de scriptare pentru a ajuta în probleme precum prelucrarea și manipularea numerică a datelor.
Include texte traduse și adaptate din Wikibooks
Lasă un răspuns