Python-taal-spiekbriefje
Python is een platformonafhankelijke computereprogrammeertaal. Het is een objectgeoriënteerde taal met dynamische typering, oorspronkelijk ontworpen voor het schrijven van automatiseringsscripts (shell). Met de voortdurende updates van versies en de toevoeging van nieuwe taalfuncties, wordt het steeds meer gebruikt voor de ontwikkeling van onafhankelijke, grootschalige projecten.
Algemeen
- Python is hoofdlettergevoelig (case-sensitive)
- Indexering in Python begint bij 0
- Python gebruikt witruimte (tabs of spaties) om code in te springen, in plaats van accolades.
Help
| Help-startpagina | help() |
| Help voor functies | help(str.replace) |
| Help voor modules | help(re) |
Modules (Bibliotheken)
| Module-inhoud weergeven | dir(module1) |
| Module laden | import module1 * |
| Functie aanroepen vanuit module | module1.func1() |
De import-instructie creëert een nieuwe naamruimte en voert alle instructies uit in het bijbehorende .py-bestand binnen die naamruimte. Als u module-inhoud in de huidige naamruimte wilt laden, gebruikt u “from module1 import *”
Scalaire typen
Datatype controleren: type(variable)
Gehele getallen (Integers)
int/long - Grote gehele getallen worden automatisch geconverteerd naar lange gehele getallen (long).
Getallen met zwevende komma (Floats)
float - 64-bits, er bestaat geen "double" type.
Booleaanse waarden (Booleans)
bool - Waar (True) of Onwaar (False).
Tekenreeksen (Strings)
str - Python 2.x is standaard ASCII; Python 3 is Unicode.
- Tekenreeksen kunnen tussen enkele/dubbele/driedubbele aanhalingstekens staan.
- Een tekenreeks is een reeks karakters en kan dus net als elke andere reeks worden behandeld.
- Speciale karakters kunnen worden weergegeven door er een \ voor te plaatsen of door gebruik te maken van raw strings die beginnen met r.
str1 = r'ditis\f?ff' - Formattering van tekenreeksen kan op verschillende manieren worden bereikt.
template = '%.2f %s haha $%d' str1 = template % (4.88, 'hola', 2)
str(), bool(), int() en float() zijn ook expliciete typeconversiefuncties.
Null-waarde (Niet gedefinieerd)
NoneType(None) - De ’null’ waarde van Python (er bestaat slechts één instantie van het None-object).
- None is geen gereserveerd trefwoord, maar de unieke instantie van “NoneType”.
- None is een veelgebruikte standaardwaarde voor optionele functieparameters:
def func1(a, b, c = None) - Veelvoorkomend gebruik van None:
if variable is None :
Datum en tijd
datetime - De ingebouwde Python “datetime” module biedt de typen “datetime”, “date”, “time”, enz.
- “datetime” combineert informatie die is opgeslagen in “date” en “time”.
Datum/tijd maken van string dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’) “date” object ophalen dt1.date() “time” object ophalen dt1.time() Datum/tijd formatteren naar string dt1.strftime(’%m/%d/%Y %H:%M’) Veldwaarde wijzigen dt2 = dt1.replace(minute = 0, second=30) Verschil ophalen diff = dt1 - dt2 # diff is een ‘datetime.timedelta’ object
Datastructuren
Tuples
Een tuple is een onveranderlijke reeks met een vaste lengte.
| Tuple maken | tup1=4,5,6 or tup1 = (6,7,8) |
| Geneste tuple maken | tup1 = (4,5,6), (7,8) |
| Reeks of iterator converteren naar tuple | tuple([1, 0, 2]) |
| Tuples samenvoegen | tup1 + tup2 |
| Tuple uitpakken | a, b, c = tup1 |
| Variabelen wisselen | b, a = a, b |
Lijsten (Lists)
Een lijst is een veranderbare reeks met een variabele lengte.
| Lijst maken | list1 = [1, ‘a’, 3] or list1 = list(tup1) |
| Lijsten samenvoegen | list1 + list2 or list1.extend(list2) |
| Toevoegen aan lijst | list1.append(‘b’) |
| Invoegen op specifieke positie | list1.insert(posIdx, ‘b’) |
| Verwijderen via index | valueAtIdx = list1.pop(posIdx) |
| Eerste waarde verwijderen | list1.remove(‘a’) |
| Controleren of waarde in lijst staat | 3 in list1 => True |
| Lijst sorteren | list1.sort() |
| Sorteren met zelfgekozen functie | list1.sort(key = len) # sorteren op lengte |
Let op:
- “Start” index is inbegrepen, maar “Stop” index niet.
- start/stop kunnen worden weggelaten, standaard is begin/einde.
Slicing
Reekstypen zijn onder andere ‘str’, ‘array’, ’tuple’, ’list’ enz.
list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]Woordenboeken (Dictionaries / Hash)
| Woordenboek maken | dict1 ={‘key1’ :‘value1’, 2 :[3, 2]} |
| Woordenboek construeren via zip | dict(zip(keyList, valueList)) |
| Element ophalen | dict1[‘key1’] |
| Element wijzigen/toevoegen | dict1[‘key1’] = ’newValue’ |
| Waarde ophalen, anders standaardwaarde | dict1.get(‘key1’, defaultValue) |
| Controleren of sleutel bestaat | ‘key1’ in dict1 |
| Element verwijderen | del dict1[‘key1’] |
| Lijst met Keys ophalen | dict1.keys() |
| Lijst met Values ophalen | dict1.values() |
| Waarden bijwerken | dict1.update(dict2) # de waarden van dict1 worden vervangen door dict2 |
Sets (Verzamelingen)
Een set is een ongeordende verzameling van unieke elementen.
| Set maken | set([3, 6, 3]) or {3, 6, 3} |
| Controleren of het een subset is | set1.issubset(set2) |
| Controleren of het een superset is | set1.issuperset(set2) |
| Geijkheid controleren | set1 == set2 |
| Vereniging (or) | set1 |
| Doorsnede (and) | set1 & set2 |
| Verschil | set1 - set2 |
| Symmetrisch verschil (xor) | set1 ^ set2 |
Functies
-
Basisvorm
def func1(posArg1, keywordArg1 = 1, ..): -
Veelvoorkomend gebruik van “Functies zijn objecten”:
def func1(ops = [str.strip, user_define_func, ..], ..): for functie in ops: waarde = functie(waarde) -
Retourwaarden
- Als er geen return-instructie aan het einde van de functie staat, wordt er niets geretourneerd (None).
- Retourneer meerdere waarden via een tuple-object.
return (waarde1, waarde2) waarde1, waarde2 = func1(..) -
Anonieme functies (Lambda)
lambda x : x * 2 # komt overeen met: # def func1(x) : return x * 2
Veelgebruikte functies
-
Enumerate: retourneert een reeks (key, val) tuples, waarbij key de index van het huidige item is.
for key, val in enumerate(collection): -
Sorted: sorteert alle itereerbare objecten.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: koppelt overeenkomstige elementen van de objecten in tuples en retourneert een lijst van deze tuples.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: retourneert een omgekeerde iterator.
list(reversed(range(10)))
Controle en Flow (Control Flow)
-
Operatoren voor “if else” voorwaarden:
Controleren of twee variabelen hetzelfde object zijn var1 is var2 Controleren of twee variabelen verschillende objecten zijn var1 is not var2 Controleren of twee variabelen dezelfde waarde hebben var1 == var2 -
Veelvoorkomend gebruik van de for-operator:
for element in iterator : -
‘pass’ - Doet niets, wordt meestal gebruikt als tijdelijke aanduiding.
-
Ternaire expressie
waarde = true-expr if condition else false-expr -
Er zijn geen switch/case-instructies, gebruik in plaats daarvan if/elif.
Objectgeoriënteerd programmeren (OOP)
-
‘object’ is de basis voor alle Python-typen.
-
Alles (getallen, tekenreeksen, functies, klassen, modules, enz.) is een object, en elk object heeft een ’type’. Objectvariabelen zijn pointers naar hun locatie in het geheugen.
-
Basisvorm van een object:
class MyObject(object): # 'self' komt overeen met 'this' in 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') -
Interactieve tools:
dir(variable1) # Lijst van alle beschikbare methoden op het object
Bewerkingen op tekenreeksen (String Operations)
Lijst/tuple samenvoegen met een scheidingsteken:
', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'Tekenreeks formatteren:
string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')Tekenreeks splitsen:
sep = '-'
stringList1 = string1.split(sep)Tekenreeks uitsnijden (slice):
start = 1
string1[start:8]Tekenreeks vullen met nullen (zero-pad):
month = '5'
month.zfill(2) => '05'
month = '12'
month.zfill(2) => '12'Uitzonderingsbeheer (Exception Handling)
- Basisvorm
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- Handmatig uitzondering instellen
raise AssertionError # Assertion failed
raise SystemExit # Verzoek om programma te beëindigen
raise RuntimeError('Foutmelding :..')List, Set en Dictionary Comprehension
Syntactische suiker om code makkelijker leesbaar en schrijfbaar te maken.
-
List Comprehension:
Vormt op een beknopte manier een nieuwe lijst door elementen van een collectie te filteren en de elementen die de filter passeren te transformeren.
Basisvorm:
[expr for val in collection if condition]Sneltoes/verkorte vorm:
result = [] for val in collection: if condition: result.append(expr) -
Dictionary Comprehension:
{key-expr : value-expr for value in collection if condition} -
Set Comprehension: Zelfde als list comprehension, alleen met {} in plaats van [].
-
Nested List Comprehension (genest):
Basisvorm:
[expr for val in collection for innerVal in val if condition]