1
votes

Une fonction lambda peut-elle avoir une valeur booléenne de false?

Est-il possible qu'une fonction lambda puisse renvoyer une valeur False , lorsqu'elle est donnée à la fonction booléenne ?

Cette fonction lambda, par exemple, donne True :

bool(lambda x:[])
True


3 commentaires

Les lambdas ne sont qu'une manière alternative d'écrire des fonctions. Vous pouvez créer une classe qui se comporte comme une fonction et est elle-même fausse, mais ce ne serait pas une fonction lambda.


Les fonctions sont donc toujours évaluées comme vraies?


Les fonctions sont véridiques par défaut, comme presque tout. Vous pouvez créer quelque chose de personnalisé, mais ce ne serait pas une fonction lambda.


3 Réponses :


3
votes

non, vous ne pouvez pas faire cela avec des expressions lambda pures.

<class 'function'>

est du type

lambda x:[]

et comme la documentation le dit, il y a rien de ce type qui se révélera être faux - donc cela sortira véridique ; c'est-à-dire en le passant à bool renverra Vrai.

si vous voulez une fonction (appelable) qui évalue à Faux je ferais exactement ce qui est décrit dans la réponse de khelwood .


0 commentaires


2
votes

Les lambdas ne sont qu'une manière alternative d'écrire des fonctions. Comme presque tout, ils sont véridiques par défaut. Vous pouvez créer une classe dont les instances se comportent comme des fonctions et sont elles-mêmes fausses. Ce ne sont pas des fonctions lambda, mais il n'y a aucune raison que cela pose un problème.

Par exemple:

class FalseyFunction:
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        return self.func(*args, **kwargs)
    def __bool__(self):
        return False

>>> f = FalseyFunction(lambda x:[])
>>> f(0)
[]
>>> bool(f)
False


0 commentaires