# git clone https://git.budem.de/philip/tennet_course.git

# Standardpython

# externe libraries
# pandas, geopandas, matplotlib, numpy, etc

a = 13
print(a, type(a))
s = "hello"
t = 'python'
print(s, t)

# unveränderlichen datentypen und veränderlichen Datentypen
# immutable und mutable

print(id(a))
b = a   # erstellt immer eine NamensReferenz auf das Objekt auf der rechten seite
print(id(b))
print()
a += 1  # a = a + 1
print(id(a))
print(a)
print(id(b))
print(b)

# unveränderliche Objekte:
#  * Zahlen: int, float, (complex)
#  * Strings
#  * tuple  (unveränderliche Liste)  (nur wenn unveränderliche elemente im tuple sind)
#  * (frozenset)
# alles andere ist veränderlich

s = "Hello World"
s = s.upper()
print(s)
s = s.replace("WORLD", "PYTHON")
print(s)

# Listen sind veränderlich

l1 = [5, "python", 1.3]
l2 = l1  # erzeugt einen zweiten verweis auf die Liste [5, "python", 1.3]
l1.append(42)
print(l2)
# += besser append und extend nutzen
l1 += [6, 1, 9]
print(l1)
print(l2)
# + (erzeuge eine neue Liste)
print(id(l1))
l1 = l1 + [1]
print(id(l1))
print(l1)
print(l2)
# best practise: append und extend
l1.append(15)

l1 = [1, 2, 3]
l2 = [4, 5, 6]
l1.extend([5, 8])
print(l1)
l1.extend("python")  # jedes element einzeln eingefügt
print(l1)
l1.extend(["python"])
print(l1)
