Skip to content

Python Cheat Sheet

Python este un limbaj de programare multi-platformă. Este un limbaj orientat pe obiecte, cu tipizare dinamică, conceput inițial pentru scrierea scripturilor de automatizare (shell). Odată cu actualizările continue și noile funcționalități, este utilizat din ce în ce mai mult pentru dezvoltarea proiectelor independente și de mari dimensiuni.

Generalități

  • Python este case-sensitive (face distincție între majuscule și minuscule)
  • Indexarea în Python începe de la 0
  • Python folosește spații albe (tab-uri sau spații) pentru indentare, nu acolade.

Ajutor (Help)

Pagina principală help help()
Ajutor funcție help(str.replace)
Ajutor modul help(re)

Module (Biblioteci)

Listare conținut modul dir(module1)
Încărcare modul import module1 *
Apelare funcție din modul module1.func1()

Instrucțiunea import creează un nou spațiu de nume și execută toate instrucțiunile din fișierul .py asociat. Dacă dorești să încarci conținutul modulului în spațiul de nume curent, folosește from module1 import *.

Tipuri scalare

Verificare tip de date: type(variable)

Întregi (Integers)

int/long - Întregii mari sunt convertiți automat în long.

Numere în virgulă mobilă (Floats)

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

Booleeni

bool - True sau False.

Șiruri de caractere (Strings)

str - În Python 2.x implicit este ASCII; în Python 3 este Unicode.

  • Șirurile pot fi delimitate prin ghilimele simple, duble sau triple.
  • Un șir este o secvență de caractere, deci poate fi tratat ca orice altă secvență.
  • Caracterele speciale pot fi escapate cu \ sau prin folosirea prefixului r pentru raw strings.
    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ă de tip.

Valoarea 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 “NoneType”.
  • None este valoarea implicită comună pentru parametrii opționali ai funcțiilor:
    def func1(a, b, c = None)
  • Utilizare comună a None:
    if variable is None:

Dată și Oră

datetime - Modul încorporat “datetime” care oferă tipuri precum “datetime”, “date”, “time”.

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

Structuri de Date

Tupluri

Un tuplu este o secvență cu lungime fixă, care nu poate fi modificată.

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

Liste

Lista este o secvență de lungime variabilă, cu elemente modificabile.

Creare listă list1 = [1, ‘a’, 3] sau list1 = list(tup1)
Concatenare liste list1 + list2 sau list1.extend(list2)
Adăugare la listă list1.append(‘b’)
Inserare pe poziție list1.insert(posIdx, ‘b’)
Ștergere element prin index valueAtIdx = list1.pop(posIdx)
Ștergere prima apariție a unei valori list1.remove(‘a’)
Verificare dacă valoarea există 3 in list1 => True
Sortare listă list1.sort()
Sortare cu funcție personalizată list1.sort(key=len) # după lungime

Notă:

  • Indexul “start” este inclus, dar indexul “stop” este exclus.
  • start/stop pot fi omise, implicit însemnând început/sfârșit.

Slicing (Feliere)

Tipurile de secvențe 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]}
Dicționar prin zip dict(zip(keyList, valueList))
Obținere element dict1[‘key1’]
Modificare/Adăugare element dict1[‘key1’] = ’newValue’
Obținere valoare cu fallback dict1.get(‘key1’, defaultValue)
Verificare existență cheie ‘key1’ in dict1
Ștergere element del dict1[‘key1’]
Listă chei dict1.keys()
Listă valori dict1.values()
Actualizare dicționar dict1.update(dict2)

Seturi (Mulțimi)

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

Creare set set([3, 6, 3]) sau {3, 6, 3}
Verificare subset set1.issubset(set2)
Verificare superset set1.issuperset(set2)
Verificare egalitate 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, ..):
  • “Funcția este obiect” - utilizare comună:

    def func1(ops = [str.strip, user_define_func, ..], ..):
        for function in ops:
            value = function(value)
  • Valoare returnată

    • Dacă nu există return, funcția returnează None.
    • Returnarea mai multor valori printr-un tuplu:
     return (value1, value2)
     value1, value2 = func1(..)
  • Funcții anonime (Lambda)

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

Funcții utile

  1. Enumerate: Returnează o secvență de tupluri (index, valoare).

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

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip: Grupează elementele din mai multe secvențe în tupluri.

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

    list(reversed(range(10)))

Control Flow

  1. Operatori condiționali:

    Verifică identitatea obiectelor var1 is var2
    Verifică non-identitatea var1 is not var2
    Verifică egalitatea valorilor var1 == var2
  2. Utilizare comună ‘for’:

    for element in iterator:
  3. ‘pass’ - nu face nimic, folosit ca placeholder.

  4. Expresie ternară:

    value = true-expr if condition else false-expr
  5. Fără instrucțiune switch/case, se folosește if/elif.

Orientare pe obiecte

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

  2. Orice (număr, șir, funcție, clasă, modul) este un obiect și are un ’type’. Variabilele sunt pointeri către locația din memorie.

  3. Formă de bază a unei clase:

    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. Instrument de inspecție:

    dir(variable1) # Listează toate metodele disponibile ale obiectului

Operațiuni pe șiruri de caractere

Concatenarea unei liste/tuplu cu un separator:

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

Formatare șir:

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

Splitting (Separație):

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

Slicing șir:

start = 1
string1[start:8]

Umplere cu zerouri (zfill):

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

Gestionarea Excepțiilor

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

List, Set și Dict Comprehensions

Zahăr sintactic pentru un cod mai lizibil.

  1. List Comprehension: Creează o listă nouă prin filtrarea și transformarea elementelor unei colecții.

    [expr for val in collection if condition]
  2. Dictionary Comprehension:

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

  4. Nested List Comprehension:

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