Voici un exemple de Python standard library, inspect.py. Actuellement, il lit
def strseq(object, convert, join=joinseq):
"""Recursively walk a sequence, stringifying each element."""
if type(object) in (list, tuple):
return join(map(lambda o, c=convert, j=join: strseq(o, c, j), object))
else:
return convert(object)
Cela a, en tant que paramètres, une fonction de conversion et une fonction join, et, récursivement, les promenades sur les listes et les tuples. La récursivité est mis en œuvre à l'aide de la carte(), où le premier paramètre est une fonction. Le code est antérieure à l'appui pour les fermetures en Python, il faut donc deux autres arguments par défaut, pour passer de convertir et de se joindre à l'appel récursif. Avec les fermetures, ce lit
def strseq(object, convert, join=joinseq):
"""Recursively walk a sequence, stringifying each element."""
if type(object) in (list, tuple):
return join(map(lambda o: strseq(o, convert, join), object))
else:
return convert(object)
Dans les langages à objets, vous n'avez généralement pas utiliser des fermetures trop souvent, que vous pouvez utiliser les objets pour passer de l'état et des méthodes liées, lorsque votre langue que la leur. Quand Python n'ai pas de fermetures, les gens ont dit que Python émule fermetures avec des objets, alors que Lisp émule des objets avec des fermetures. Comme un exemple à partir du RALENTI (ClassBrowser.py):
class ClassBrowser: # shortened
def close(self, event=None):
self.top.destroy()
self.node.destroy()
def init(self, flist):
top.bind("<Escape>", self.close)
Ici, l'auto.la fermeture est un paramètre moins de callback appelée lorsque la fuite est pressé. Cependant, la mise en œuvre n'a besoin de paramètres - à savoir l'auto, et puis l'auto.en haut, de soi.nœud. Si Python n'ont pas les méthodes liées, vous pouvez écrire
class ClassBrowser:
def close(self, event=None):
self.top.destroy()
self.node.destroy()
def init(self, flist):
top.bind("<Escape>", lambda:self.close())
Ici, le lambda serait d'obtenir le "soi" ne pas partir d'un paramètre, mais à partir du contexte.