我从http://www.s-anand.net/euler.html上获取了一段代码,它与第5个问题相关:
def gcd(a,b):
print a,b
return b and gcd(b, a % b) or a
print gcd(10,20)
输出结果:
10 20
20 10
10 0
10
为什么最后一行只打印出 "a" 而不是 b。
请解释一下上面代码中的 return 语句是如何工作的。
我有点困惑 "and" 和 "or" 运算符。
a if b else c
是因为经常会由于误解/误用b and a or c
而导致频繁的错误。如果a
是一个假值,它将永远不会被返回。True and "" or "Oops"
的结果是"Oops"
,而"" if True else "Oops"
的结果是""
。 - Jeremy