---
# System prepended metadata

title: Untitled

---

## Was sollte man in python machen?

### Was python?
- Interpretierte Skirptsprache
- cpythons Core ist in C programmiert
    - gibt aber mehr implementationen - jython.
- python3(.10) ist aktuell
- Beliebt weil optimiert auf Programmierzeit
- Mies lamgsam im Vergleich zu C
    - Man kann C Code wrappen (TODO: Wollen wir das später zeigen? - Wenn ja. Wie geht das denn? Wie viel vodoo magic ist das?)

### Syntax
- variablen zuweisen
- funktionen aufrufen
    - mehr zu funktionen und built-in funktionen später
- Es gibt nur Einrückungen für logische Blöcke
- Keine ezessive Klammerung
- Keine Semicolons
- if, elif, else
    - 'boolsche Syntax' -> ==, !=, >=, >, and, or, is, not
- for, while
    - TODO: hier schon enumerate?
    - Laufzeit von for-loops ist besser bzw while sucks
    - List comprehensions :D


### Datentypen
Idee: Wir zeigen erst die basis Datentypen und was da anders als C ist.  
Dann mutable  
Dann reißen wir Objekte an:  
"Oh! Das sind ja Objekte! Da kann man ja Dinge drauf aufrufen :0" und zeigen dann Dinge wie append und join  
Im letzten Schritt zeigen wir dann wie man seine eigenen Klassen bauen kann.  
_Alternativ:_
Zu allen Datentypen immer direkt die wichtigsten Funktionen inkl. cooler Syntax zeigen und danach die Threorie erklären  
#### immutable
- True, False, None
- int (bel. Länge), float -> alle nummern was gibt
    - to hex, to bytes?
- string (boah, krass! Das hat C nicht! :0)
    - f strings
- bytes (?)
- tuple
    - Überleitung zu immutable

#### mutable
- datetypen sind run and go. was ist speicher allokieren?!
- listen (alles kann da rein)
    - wie man listen mit bestimmtem stuff initialisiert
    - append
- dict
    - dict comprehensions ^^
    - get
    - vergleich zu jsons ziehen?
- set 
    - wie listen nur anders
    - vorsicht mit dem constructor

#### syntactic sugar
- slicing
    - getitem / setitem -> []

#### ducktyping
- str, getitem, setitem, eq, leq


### Klassen
- init
- funktionen auf Klassen
- wie erstelle ich eine Klasse?
- property

##### Aufgabe zum Anwenden:
[Custom String](https://gist.github.com/nonchris/25676e4d9c61d933168e352ef8a0bde1)  


### funktionen
Manchmal ist ein ganzes Objekt etwas viel... Funktionen!
- synatx - def... 
- typehinting
- keyword args! 
    - funktionen können nicht überladen werden
- \*args
    - Zeigen wir dass man mit dieser Syntax auch Dinge in mehrere Variablen entpacken kann?
- \*\*kwargs
- krass man kann funktionen übergeben
- bock auf decoratoren?

#### Kontextmanager
- with
    - open, conn
- an dieser Stelle könnte man mal auf builtin funktionen eingehen
- open, type, filter, enumerate, range, print

### Error handling
- try, except, finally


### imports
- syntax unterschiede zwischen import x und from x import y
- die standard libraries
    - os, json, csv

- was is n modul? - ach so im Grunde einfach nur eine python datei.

- zeigen was bei import mit eigener Datei passiert
    - Daher nur funktionen und klassen schreiben
    - if name == main

#### meet pip
pip installs packages ;)  
- requrements.txt

#### geiles libraries

##### built-in
math, functools

##### pypi
- numpy, pandas, pwntools, discord.py :P

#### packaging
wollen wir zeigen wie eine gute projektstruktur aussieht?  
Is halt schon geil, wenn man das kann...  
Eventuell sogar wie man auf pip pushed? :D  


#### Coding style
- if return, else return
    - nicht alles in ein if/ else packen

