展开全部
filter 函数的作用是“根据返回值是True还是False决定保32313133353236313431303231363533e58685e5aeb931333363396438留还是丢弃该元素。”(真的留下 假的去除)
看下到底返回了什么:
def not_empty(s):
return s and s.strip()
print(not_empty("A"),not_empty(""),not_empty("B"),not_empty(None),not_empty("C"),not_empty(" "))
A B None C
用bool() 检测下 哪些是真,假print(bool(not_empty("A")),bool(not_empty("")),bool(not_empty("B")),bool(not_empty(None)),bool(not_empty("C")),bool(not_empty(" ")))
True False True False True False
明白了不?关于return s and s.strip() 返回值的问题上边的最佳答案写的很明白 :“如果s is None,那么s会被判断为False。而False不管和什么做and,结果都是False,所以不需要看and后面的表达式,直接返回s(注意不是返回False)。
如果s is not None,那么s会被判断为True,而True不管和什么and都返回后一项。于是就返回了s.strip()。”