Woche 04#

Funktionen definieren

"hallo" * 2
'hallohallo'
def doppelt(x):
    return x * 2
doppelt( "hallo" )
'hallohallo'
doppelt(2)
4
doppelt( [ 1,2,3] )
[1, 2, 3, 1, 2, 3]
def multi(x):
    n = 3 # n ist lokal in der Funktion, äußeres n wird nicht geändert
    return x * n
multi("hallo")
'hallohallohallo'
n = 99
multi("hallo") # n ist lokal in der Funktion, äußeres n wird nicht geändert
'hallohallohallo'
n
99

positional argument#

def x_mal_y( x, y):
    return x * y
# wirft fehler
# x_mal_y( "Hallo", "Welt")
# wift fehler
# x_mal_y(3)
def x_mal_y( x, y=2): # default wert
    return x * y
x_mal_y(3)
6
def p_plus_q_r_s(p,q,r,s):
    return p + q
p_plus_q_r_s(1,2,3,4)
3
p_plus_q_r_s( s=4, p=1, q=2, r=3)
3
# wirft Fehler
# p_plus_q_r_s( s=4, p=1, q=2)
def x_mal_y_hoch_z(x, y, *, z=1, p=1, q=1, r=1):
    return (x*y)**z
x_mal_y_hoch_z(2, 3)
6

Rückgabewert None#

def a_minus_b(a,b):
    ergebnis = a - b
    if ergebnis != 0:
        return ergebnis
    else:
        return None
a_minus_b(5,3)
2
a_minus_b(5,5)
z = a_minus_b(5,5)
z

Wiederholung: mutables#

l1 = [ 1,2,3]
l2 = l1
l2
[1, 2, 3]
l1.append(99)
l2
[1, 2, 3, 99]
l1 = [1,2,3]

#l2 = l1     # Pointer auf das selbe Objekt

#l2 = l1[:]  # Slicing erzeugt Kopie
#l2 = l1 + [] # "+" erzeugt Kopie
l1.extend( [] )  ## JB : liefert None zurück

l1.append(99)
l2
[1, 2, 3, 99]
l789 = [ 7,8,9]
l789.extend([10,11,12])
l789
[7, 8, 9, 10, 11, 12]
l8 = [1,2,3]
l9 = l8 * 2
l8 *2
[1, 2, 3, 1, 2, 3]
l9
[1, 2, 3, 1, 2, 3]
l9 is l8 *2
False
def doppelt(xx):
    xx = 2* xx
    return xx
a = 42
doppelt(a)
84
a
42
## wirft fehler, weil undefiniert
# xx
l1 = [1, 2,3]
l2 = doppelt(l)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[39], line 2
      1 l1 = [1, 2,3]
----> 2 l2 = doppelt(l)

NameError: name 'l' is not defined
l
l2
def list_append_99(xxx):
    return xxx.append(99)
l = [1,2,3]
list_append_99(l)  # Pointer auf l
l
l = [1,2,3]
list_append_99( l[:] ) # Kopie von l
l

Wiederholung: Dicts#

d = { "Otto Müller": "2020-01-01" }
d["Otto Müller"]
d = { ("Otto", "Müller") : "2020-01-01" }