Discuss / Python / 关于 return s and s.strip() ......

关于 return s and s.strip() ......

Topic source

laputa6616

#1 Created at ... [Delete] [Delete and Lock User]

有人能告诉我,删除空字符串那个例子里面为什么不直接用 return s.strip()呢,这里 return s and s.strip() 与 return s.strip() 有什么区别啊?

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

如果s是None,s.strip()会报错,但s and s.strip()不会报错

laputa6616

#3 Created at ... [Delete] [Delete and Lock User]

谢谢!奇怪的是,s = None 的时候,s and s.strip() 不会报错,但是 s.strip() and s 会报错,真是有点不明白 and表达式 的机制了......

__勍

#4 Created at ... [Delete] [Delete and Lock User]

and 计算到第一个为假,就不会去计算第二个了。所以s and s.strip() 不会报错,因为不会调用s.strip()。但是 s.strip() and s 由于第一个调用的就是s.strip(),所以就报错了

ForkPanda

#5 Created at ... [Delete] [Delete and Lock User]

这个小技巧让我想到了 iOS 框架 ReactiveCocoa 的宏应用。 很有用的小技巧。

负电荷g

#6 Created at ... [Delete] [Delete and Lock User]

先判断s.strip(),不满足就不再判断s了,s=none时不就和s.strip()一样么

yang_hope

#7 Created at ... [Delete] [Delete and Lock User]

请问['A', '', 'B', None, 'C', ' ']这个里面的None是怎么筛掉的呢,不是strip只能去除空格吗?没想明白


  • 1

Reply