在蟒蛇它是有效的,使建築,如:爲什麼函數對象在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,[],「」等等) –