首页 > 解决方案 > Python:使用带有 lambda 函数的“或”进行变量赋值?

问题描述

我遇到了一个 Python Challenge 问题,其中包含我不理解的变量声明。它要求输出此代码。

a = "abcd"
b = "abc"
func = (lambda s:s[1:]) or (lambda s:s[:-1])
print(func(b))

我几乎忽略了第二个 lambda 并得到了正确的答案:

"bc"

我的问题是,在 lambda 函数之间进行变量分配时使用“或”有什么实际用途?我将如何访问“或”语句中的第二个 lambda?调用第二个 lambda 函数的示例是什么?

注意:我的问题已被标记为重复。另一个问答提供了与我的主题相关的大量信息和补充知识。但是,该问题涉及返回值和一般语句。我认为我的问题是不同的,因为它处理变量赋值而不是返回值,以及“或”对函数的应用,我在另一个问题中没有看到。我仍然想澄清应用于 lambda 函数的真实性或虚假值的概念。

标签: pythonlambda

解决方案


让我们看看这个:

a = None or 1 
b = 'ABC' or None
c = None or True
d = 'F' or 'Z'
e = 1 or 2
f = None or None or 5
g = False or None or True
h = 1==2 or 'T'

运行每个变量的输出,您可以看到变量被分配了第一个值,只要它不是 False/None。


推荐阅读