Code: Alles auswählen
def fac(n, acc=1):
if n == 1: return acc
continue(n - 1, acc * n)
Code: Alles auswählen
def fac(n, acc=1):
if n == 1: return acc
continue(n - 1, acc * n)
Code: Alles auswählen
def factorial(n):
if n == 1:
return 1
else:
return n + factorial(n - 1)
Code: Alles auswählen
def factorial(n):
if n == 1:
return 1
else:
return from n * factorial(n - 1) # FictionalSyntaxError, see below
^^^^^^ ^^^^
Code: Alles auswählen
def factorial(n):
def fact(n, acc):
if n == 1:
return acc
else:
return from fact(n - 1, n * acc)
return from fact(n, 1)
Meh! Spielverderber! Ich glaube, Context Manager wurden nur eingeführt, weil Guido kein TCO will und es mit diesen praktisch verunmöglicht wurde.cofi hat geschrieben:[...] dass man in Python sehr einfach Funktionen konstruieren kann, die nach TR aussehen, aber keine sind. Z.B. wenn Context Manager im Spiel sind. [...]
Code: Alles auswählen
with open(path) as f:
...
return foo(data)
Code: Alles auswählen
try:
f = open(path)
...
return foo(data)
finally:
f.close()