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" }