Home » Articole » Articole » Calculatoare » Programare » Python » Tipuri și operații aritmetice în limbajul de programare Python

Tipuri și operații aritmetice în limbajul de programare Python

postat în: Python 0

Metode

Metodele pe obiecte sunt funcții atașate clasei obiectului; sintaxa
instance.method(argument)
este, pentru metode și funcții normale, zahăr sintactic pentru
Class.method(instance,
argument)
. Metodele Python au un parametru de explicitate 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

Ierarhia de tip standard în Python 3.
Ierarhia de tip standard în Python 3. Sursa: Максим Пе, https://en.wikipedia.org/wiki/File:Python_3._The_standard_type_hierarchy.png, licența CC BY-SA 4.0. Traducere și adaptare: Nicolae Sfetcu

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,
SpamClass()
sau
EggsClass()
), iar clasele sunt instanțe de tip metaclasă (în sine o instanță de sine), permițând metaprogramarea și reflexia.

Î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.

Sumar pentru tasările incorporate ale lui Python 3
Tip Mutabilitate Descriere Exemple sintaxă
bool imutabil Valoare booleană
True


False
bytearray mutabil Secvența de octeți
bytearray(b'Some
ASCII'
)


bytearray(b"Some
ASCII"
)


bytearray([119,
105, 107,
105])
bytes imutabil Secvența de octeți
b'Some ASCII'


b"Some ASCII"


bytes([119,
105, 107,
105])
complex imutabil Număr complex cu părți reale și imaginare
3+2.7j


3 + 2.7j
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
{'key1':
1.0, 3:
False}


{}
ellipsis(a) imutabil Un substituent de puncte de suspensie pentru a fi utilizat ca index în matricele NumPy
...


Ellipsis
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.
1.414
frozenset imutabil Set neordonat, nu conține duplicate; poate conține tipuri mixte, dacă este hashabil
frozenset([4.0,
'string',
True])
int imutabil Întreg de magnitudine nelimitată
42
list mutabil Listă, poate conține tipuri mixte
[4.0,
'string',
True]


[]
NoneTypea imutabil Un obiect care reprezintă absența unei valori, adesea numit nul în alte limbaje.
None
NotImplementedTypea imutabil Un substituent care poate fi returnat de la operatori supraîncărcați pentru a indica tipurile operandi neacceptate.
NotImplemented
range imutabil O secvență de numere utilizate în mod obișnuit pentru a bucla un număr specific de ori bucle for
range(1,
10)


range(10,
-5,
-2)
set mutabil Set neordonat, nu conține duplicate; poate conține tipuri mixte, dacă este hashabil
{4.0,
'string',
True}


set()
str imutabil Un șir de caractere: secvența punctelor de cod Unicode
'Wikipedia'


"Wikipedia"

"""Spanning
multiple
lines"""
tuple imutabil Poate conține tipuri mixte
(4.0,
'string',
True)


('single element',)


()

(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 %
-3 == -2
). De asemenea, are ** 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.
    7/3
    == 2
    și
    -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 //. Deci 7//3 == 2,
    -7//3 == -3
    , 7.5//3 == 2.0 și -7.5//3 == -3.0. Adăugarea
    from __future__
    import division
    face ca un modul să utilizeze regulile Python 3.0 pentru divizare (vezi următorul).
  • 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
(a +
b)//b
== a//b
+ 1
este întotdeauna adevărată. De asemenea, înseamnă că ecuația
b*(a//b)
+ a%b
== a
este valabilă atât pentru valorile pozitive, cât și pentru cele negative ale lui a. 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
fractions
oferă precizie arbitrară pentru numerele raționale.

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

Traducere şi traducători
Traducere şi traducători

Include Ghidul Comisiei Europene pentru traducătorii din Uniunea Europeană Despre traducere şi traducători, teorii ale traducerilor, traducerea asistată pe calculator, şi software utilizat în traduceri. Include Ghidul Comisiei Europene pentru traducătorii din Uniunea Europeană şi legislaţia specifică traducerilor şi traducătorilor. … Citeşte mai mult

Nu a fost votat 14.09 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Proiectarea, dezvoltarea şi întreţinerea siturilor web
Proiectarea, dezvoltarea şi întreţinerea siturilor web

Un ghid pentru dezvoltatorii web, cu accent pe HTML, XML, JavaScript, SQL, tehnologii web, software web, software pentru dezvoltare web, aplicaţii web, şabloane pentru aplicaţii web, AJAX, servicii web, sindicalizarea web, web design, situri web, găzduirea web, analiza siturilor web, … Citeşte mai mult

Nu a fost votat 14.09 lei56.41 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Filosofia tehnologiei blockchain - Ontologii
Filosofia tehnologiei blockchain – Ontologii

Despre necesitatea şi utilitatea dezvoltării unei filosofii specifice tehnologiei blockchain, accentuând pe aspectele ontologice. După o Introducere în care evidenţiez principalele direcţii filosofice pentru această tehnologie emergentă, în Tehnologia blockchain explicitez modul de funcţionare al blockchain, punând în discuţie direcţiile ontologice de dezvoltare … Citeşte mai mult

Nu a fost votat 0.00 lei12.96 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *