1
SErHo 2016-08-16 18:03:33 +08:00 1
你在哪儿学的 expr1 and expr2 这种形式会返回 tuple ,这个是个布尔运算啊: 如果 expr1 为真,则返回 expr2 的值,为假就直接返回 expr1 了
|
2
Lonely 2016-08-16 18:08:43 +08:00 via iPhone
……
|
3
Newyorkcity OP @SErHo
expr1 为真则返回 expr2? 那我这里 expr1 为 s (即输入数据本身)的时候是不是总是返回 s.strip()? 然后 expr1 怎么判断真假呢? 比如输入的为 input input == expr1 这样?还是 isinstance(expr1,input)这样? 另外为什么输入 None 会成功返回 None 呢? 谢谢 |
4
yexiaoxing 2016-08-16 19:50:10 +08:00 via Android 1
return expr1 and expr2
expr1 和 expr2 都是判断语句而已,如果 expr2 是 s.strip(),如果结果不为空就是 True 效果就像是 if expr1 and expr2: return True else: return False 如果你要返回一个 tuple ,试试 return s, s.strip() |
5
yexiaoxing 2016-08-16 19:51:21 +08:00 via Android
btw, 图片请传到微博或者别的没有访问权限的图床,或者给 V2EX 捐助以拿到自带图床权限
|
6
lujjjh 2016-08-16 21:23:14 +08:00 1
短路求值是现代编程语言里通用的逻辑运算符求值策略。
Python 里 s and s.strip() 等同于 s.strip() if s else s return s and s.strip() 就等同于 if s: return s.strip() else: return s 并非像楼上说的那样。 具体 Python 里对 and 和 or 是怎么求值的,以及什么表达式视为 True 什么表达式视为 False ,看这里 https://docs.python.org/3/reference/expressions.html#booleans |