Skip to content

Cheat sheet pentru limbajul Python

Python este un limbaj de programare per calculator multi-platformă. Este un limbaj orientat pe obiecte, cu tipizare dinamică, conceput inițial pentru scrierea de scripturi de automatizare (shell). Odată cu actualizarea continuă a versiunilor și adăugarea de noi funcții de limbaj, acesta este utilizat din ce în ce mai mult pentru dezvoltarea de proiecte independente și la scară largă.

Generalități

  • Python este case-sensitive (face distincție între majuscule și minuscule)
  • Indexarea în Python începe de la 0
  • Python utilizează spațiile libere (tab-uri sau spații) pentru indentarea codului, în loc de acolade.

Ajutor (Help)

Pagina principală de ajutor help()
Ajutor pentru funcții help(str.replace)
Ajutor pentru module help(re)

Module (Biblioteci)

Listează conținutul modulului dir(module1)
Încarcă modulul import module1 *
Apeleză funcția din modul module1.func1()

Instrucțiunea import creează un spațiu de nume nou și execută toate instrucțiunile din fișierul .py asociat în cadrul acelui spațiu de nume. Dacă doriți să încărcați conținutul modulului în spațiul de nume curent, utilizați „from module1 import *”

Tipuri scalare

Verificarea tipului de date: type(variable)

Întregi (Integers)

int/long - Întregii mari sunt convertiți automat în întregi lungi (în Python 3, există doar int care gestionează orice dimensiune).

Numere cu virgulă mobilă (Floats)

float - 64 biți, nu există tipul "double".

Valori booleene (Booleans)

bool - Adevărat (True) sau Fals (False).

Șiruri de caractere (Strings)

str - Python 2.x implicit: ASCII; Python 3: Unicode.

  • Șirurile pot fi între ghilimele simple/duble/triple.
  • Un șir este o secvență de caractere, deci poate fi tratat ca orice altă secvență.
  • Caracterele speciale pot fi reprezentate precedându-le cu \ sau folosind r (raw strings) la început.
    str1 = r'this\f?ff'
  • Formatarea șirurilor poate fi realizată în mai multe moduri.
    template = '%.2f %s haha $%d'
    str1 = template % (4.88, 'hola', 2)

str(), bool(), int() și float() sunt, de asemenea, funcții de conversie explicită a tipului.

Valoarea Null (Nulă)

NoneType(None) - Valoarea „null” în Python (există doar o singură instanță a obiectului None).

  • None nu este un cuvânt cheie rezervat, ci instanța unică a clasei „NoneType”.
  • None este o valoare implicită comună pentru parametrii opționali ai funcțiilor:
    def func1(a, b, c = None)
  • Utilizarea comună a lui None:
    if variable is None :

Data și ora

datetime - Modulul încorporat Python „datetime” oferă tipurile „datetime”, „date”, „time” etc.

  • „datetime” combină informațiile stocate în „date” și „time”.
    Creare datetime din șir dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’)
    Obținere obiect „date” dt1.date()
    Obținere obiect „time” dt1.time()
    Formatare datetime ca șir dt1.strftime(’%m/%d/%Y %H:%M’)
    Modificare valoare câmp dt2 = dt1.replace(minute = 0, second=30)
    Obținere diferență diff = dt1 - dt2 # diff este un obiect „datetime.timedelta”

Structuri de date

Tupluri (Tuples)

Un tuplu este o secvență cu lungime fixă și nemodificabilă.

Creare tuplu tup1=4,5,6 or tup1 = (6,7,8)
Creare tuplu imbricat tup1 = (4,5,6), (7,8)
Convertire secvență sau iterator în tuplu tuple([1, 0, 2])
Concatenare tupluri tup1 + tup2
Despachetare tuplu a, b, c = tup1
Interschimbare variabile b, a = a, b

Liste (Lists)

O listă este o secvență cu lungime variabilă și elemente modificabile.

Creare listă list1 = [1, ‘a’, 3] or list1 = list(tup1)
Concatenare liste list1 + list2 or list1.extend(list2)
Adăugare la listă list1.append(‘b’)
Inserare la o poziție specifică list1.insert(posIdx, ‘b’)
Ștergere prin index valueAtIdx = list1.pop(posIdx)
Ștergerea primei apariții a unei valori list1.remove(‘a’)
Verificare existență valoare 3 in list1 => True
Sortare listă list1.sort()
Sortare cu funcție personalizată list1.sort(key = len) # sortare după lungime

Notă:

  • Indexul de „început” (start) este inclus, dar cel de „sfârșit” (stop) nu este.
  • start/stop pot fi omise, implicit fiind începutul/sfârșitul.

Slicing (Decupare)

Tipurile secvențiale includ „str”, „array”, „tuple”, „list” etc.

list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]

Dicționare (Hash)

Creare dicționar dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
Construire dicționar prin zip dict(zip(keyList, valueList))
Obținere element dict1[‘key1’]
Modificare/Adăugare element dict1[‘key1’] = ’newValue’
Obținere valoare, altfel implicită dict1.get(‘key1’, defaultValue)
Verificare existență cheie ‘key1’ in dict1
Ștergere element del dict1[‘key1’]
Obținere listă chei dict1.keys()
Obținere listă valori dict1.values()
Actualizare valori dict1.update(dict2) # valorile dict1 sunt înlocuite de dict2

Seturi (Sets)

Un set este o colecție neordonată de elemente unice.

Creare set set([3, 6, 3]) or {3, 6, 3}
Verificare dacă este subset set1.issubset(set2)
Verificare dacă este superset set1.issuperset(set2)
Verificare egalitate seturi set1 == set2
Reuniune (or) set1
Intersecție (and) set1 & set2
Diferență set1 - set2
Diferență simetrică (xor) set1 ^ set2

Funcții

  • Formă de bază:

    def func1(posArg1, keywordArg1 = 1, ..):
  • Utilizarea comună a conceptului „funcțiile sunt obiecte”:

    def func1(ops = [str.strip, user_define_func, ..], ..):
        for function in ops:
            value = function(value)
  • Valori returnate:

    • Dacă nu există instrucțiune return la final, nu returnează nimic (None).
    • Returnarea mai multor valori printr-un obiect tuplu.
    return (value1, value2)
    
    value1, value2 = func1(..)
  • Funcții anonime (Lambda):

    lambda x : x * 2
    # echivalent cu:
    # def func1(x) : return x * 2

Funcții frecvente

  1. Enumerate: returnează o secvență de tupluri (cheie, valoare), unde cheia este indexul elementului curent.

    for key, val in enumerate(collection):
  2. Sorted: efectuează sortarea pe orice obiect iterabil.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip: împachetează elementele corespondente ale obiectelor în tupluri și returnează o listă compusă din aceste tupluri.

    zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..]
  4. Reversed: returnează un iterator inversat.

    list(reversed(range(10)))

Control și flux (Control Flow)

  1. Operatori pentru condiția „if else”:

    Verificare dacă două variabile sunt același obiect var1 is var2
    Verificare dacă două variabile sunt obiecte diferite var1 is not var2
    Verificare dacă două variabile au aceeași valoare var1 == var2
  2. Utilizarea comună a operatorului for:

    for element in iterator :
  3. ‘pass’ - Nu face nimic, utilizat în general ca substituent (placeholder).

  4. Expresie ternară:

    value = true-expr if condition else false-expr
  5. Nu există instrucțiuni switch/case, se utilizează în schimb if/elif.

Orientare pe obiecte (OOP)

  1. ‘object’ este baza pentru toate tipurile Python.

  2. Orice (numere, șiruri, funcții, clase, module etc.) este un obiect, iar fiecare obiect are un „type”. Variabilele de tip obiect sunt pointeri către locația lor în memorie.

  3. Forma de bază a unui obiect:

    class MyObject(object):
        # ‘self’ este echivalentul lui ‘this’ din Java/C++
        def __init__(self, name):
            self.name = name
    
        def memberFunc1(self, arg1):
            ..
    
        @staticmethod
        def classFunc2(arg1):
            ..
    
    obj1 = MyObject('name1') 
    obj1.memberFunc1('a') 
    MyObject.classFunc2('b')
  4. Instrumente interactive:

    dir(variable1) # Listează toate metodele disponibile pe obiect

Operațiuni pe șiruri de caractere

Unirea listei/tuplului folosind un separator:

', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'

Formatarea șirului:

string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')

Divizarea șirului:

sep = '-'
stringList1 = string1.split(sep)

Tăierea șirului (slice):

start = 1
string1[start:8]

Completarea șirului cu zerouri (z-fill):

month = '5'
month.zfill(2) => '05' 
month = '12'
month.zfill(2) => '12'

Gestionarea excepțiilor

  1. Formă de bază:
try:
    ..
except ValueError as e:
    print(e)
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. Lansarea manuală a unei excepții:
raise AssertionError # eșec aserțiune
raise SystemExit # solicitare ieșire program
raise RuntimeError('Error message :..')

List, Set și Dictionary Comprehension

Zahăr sintactic pentru a face codul mai ușor de citit și de scris.

  1. List Comprehension:

    Formarea concisă a unei noi liste prin filtrarea elementelor unei colecții și transformarea elementelor care trec de filtru într-o singură expresie.

    Forma de bază:

    [expr for val in collection if condition]

    Scurtătură pentru:

    result = []
    for val in collection:
        if condition:
            result.append(expr)
  2. Dictionary Comprehension:

    {key-expr : value-expr for value in collection if condition}
  3. Set Comprehension: La fel ca list comprehension, doar că folosind {} în loc de [].

  4. Nested List Comprehension (imbricat):

    Forma de bază:

    [expr for val in collection for innerVal in val if condition]