def get(self){
n=self.get.request(n,0)
n=n and int(n)
self.render(fizzbuzz.html,n=n)
}
这就是n=n and int(n)
行的含义
这是代码行是从udacity cs253课程中获取的。是的,你也可以建议我任何类似的课程,但更新,因为cs 253是旧的...
答案 0 :(得分:4)
and
运算符返回第一个" falsey"的值。它看到的价值,或两者都是真的第二个价值。所以你有:
>>> 0 and False
0
>>> False and 0
False
>>> 0 and 1
0
>>> -2 and 0
0
>>> 5 and 3
3
在您的情况下,您有n and int(n)
。如果n
或int(n)
为零,则返回0.如果两者都非零,则返回int(n)
。
值得注意的是:(a)此代码不必要地混淆,(b)只需使用int(n)
即可简化;如果n
为零,则int(n)
为零,因此首先检查n
是没有意义的。
答案 1 :(得分:1)
声明
n = n and int(n)
将首先评估n
。如果其值为0,或""
或False
(或other "falsy" values的数量),则n
将保持不变。如果n
是其他内容,则会调用int(n)
将其转换为整数,结果将分配给n
。
这是一个相当不寻常的事情,从你发布的代码中不清楚为什么作者不能简单地写n = int(n)
。