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 prefixuluirpentru 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(..) - Dacă nu există
-
Funcții anonime (Lambda)
lambda x : x * 2 # echivalent: def func1(x) : return x * 2
Funcții utile
-
Enumerate: Returnează o secvență de tupluri (index, valoare).
for key, val in enumerate(collection): -
Sorted: Sortează orice obiect iterabil.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: Grupează elementele din mai multe secvențe în tupluri.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: Returnează un iterator inversat.
list(reversed(range(10)))
Control Flow
-
Operatori condiționali:
Verifică identitatea obiectelor var1 is var2 Verifică non-identitatea var1 is not var2 Verifică egalitatea valorilor var1 == var2 -
Utilizare comună ‘for’:
for element in iterator: -
‘pass’ - nu face nimic, folosit ca placeholder.
-
Expresie ternară:
value = true-expr if condition else false-expr -
Fără instrucțiune switch/case, se folosește
if/elif.
Orientare pe obiecte
-
‘object’ este baza pentru toate tipurile Python.
-
Orice (număr, șir, funcție, clasă, modul) este un obiect și are un ’type’. Variabilele sunt pointeri către locația din memorie.
-
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') -
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
- Formă de bază
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- 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.
-
List Comprehension: Creează o listă nouă prin filtrarea și transformarea elementelor unei colecții.
[expr for val in collection if condition] -
Dictionary Comprehension:
{key-expr : value-expr for value in collection if condition} -
Set Comprehension: La fel ca list comprehension, dar folosind
{}în loc de[]. -
Nested List Comprehension:
[expr for val in collection for innerVal in val if condition]