在蟒蛇它是有效的,使建筑,如:为什么函数对象在python中评估为True?
def a():
return 0
if a:
print "Function object was considered True"
else:
print "Function object was considered False"
我要问什么是一个函数指针进行评估,以真正的逻辑。
为什么这种结构插入语言中?
在蟒蛇它是有效的,使建筑,如:为什么函数对象在python中评估为True?
def a():
return 0
if a:
print "Function object was considered True"
else:
print "Function object was considered False"
我要问什么是一个函数指针进行评估,以真正的逻辑。
为什么这种结构插入语言中?
很多东西在Python中以True
评估。从documentation on Boolean operators:
在布尔运算的情况下,以及当表达式通过控制流语句中,以下值解释为假:
False
,None
,所有类型的数字零,空字符串和容器(包括字符串,元组,列表,字典,集合和frozensets)。所有其他值都被解释为true。在Python
功能,像这么多的东西,是对象,而不是空的。因此,在布尔上下文中,它们评估为True。
+1引用文档 –
@MagnusHoff:感谢您的纠正;没有注意到哈希碎片丢失了,这当然是我的意图。 –
,在蟒蛇是假的对象列表:
None
[]
{}
empty set
empty frozenset
False
0
0.0
0L
0j
defaultdict
Classes
已实施__nonzero__()
方法和一个返回值falsy否则 __len__()
被调用。在蟒蛇3x __bool__()
取代__nonzero__()
。和0.0。和0j。和0L。或者长度为0,或者它的__nonzero __()方法返回False。 –
空集 - 和空的frozenset和空的defaultdict和... –
你应该添加'__len __()',因为它没有定义'__nonzero __()'时被评估。还要注意'__bool __()'代替Python 3.x中的__nonzero __()' – moooeeeep
你可以发布更多的上下文吗?在其他地方定义了“a”吗? – unutbu
本页面出于您可能希望使用此功能的某些原因:http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/boolean。html – aganders3
与任何编程语言相同......任何不评估为false的东西都会评估为true ...评估为false的东西比枚举更容易(0,False,None,[],“”等等) –