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
-
Enumerate: returnează o secvență de tupluri (cheie, valoare), unde cheia este indexul elementului curent.
for key, val in enumerate(collection): -
Sorted: efectuează sortarea pe orice obiect iterabil.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: împachetează elementele corespondente ale obiectelor în tupluri și returnează o listă compusă din aceste tupluri.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: returnează un iterator inversat.
list(reversed(range(10)))
Control și flux (Control Flow)
-
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 -
Utilizarea comună a operatorului for:
for element in iterator : -
‘pass’ - Nu face nimic, utilizat în general ca substituent (placeholder).
-
Expresie ternară:
value = true-expr if condition else false-expr -
Nu există instrucțiuni switch/case, se utilizează în schimb if/elif.
Orientare pe obiecte (OOP)
-
‘object’ este baza pentru toate tipurile Python.
-
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.
-
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') -
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
- Formă de bază:
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- 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.
-
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) -
Dictionary Comprehension:
{key-expr : value-expr for value in collection if condition} -
Set Comprehension: La fel ca list comprehension, doar că folosind {} în loc de [].
-
Nested List Comprehension (imbricat):
Forma de bază:
[expr for val in collection for innerVal in val if condition]