我遇到了一个Python挑战问题,其中包含一个我不理解的变量声明。它要求输出此代码。
a = "abcd"
b = "abc"
func = (lambda s:s[1:]) or (lambda s:s[:-1])
print(func(b))
我几乎忽略了第二个lambda,并得到了正确的答案:
"bc"
我的问题是,在lambda函数之间的变量分配过程中,使用“或”的实际用途是什么?以及如何在“或”语句中访问第二个lambda?调用第二个lambda函数的例子是什么?
注意:我的问题已被标记为重复。另一个问题和答案提供了与我的主题相关的大量信息和补充知识。但是,这个问题涉及返回值和一般性陈述。我认为我的问题是不同的,因为它处理变量赋值而不是返回值,以及对函数应用“或”,这在另一个问题中没有涉及。我仍然想澄清应用于lambda函数的真值或假值的概念。
答案 0 :(得分:1)
我们来看一下:
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,就将为其分配变量。