虽然有很多方法可以解决这个问题,但由于人格缺陷,在我了解失败的性质之前,我不能放手。
尝试:
class OurFavAnimals(object):
FAVE = 'THATS ONE OF OUR FAVORITES'
NOTFAVE = 'NAH WE DONT CARE FOR THAT ONE'
UNKNOWN = 'WHAT?'
FAVES = defaultdict(lambda: UNKNOWN, {x:FAVE for x in ['dog', 'cat']})
FAVES['Crab'] = NOTFAVE
失败:
3 NOTFAVE = 'NAH WE DONT CARE FOR THAT ONE'
4 UNKNOWN = 'WHAT?'
----> 5 FAVES = defaultdict(lambda: UNKNOWN, {x:FAVE for x in ['dog', 'cat']})
6 FAVES['Crab'] = NOTFAVE
NameError: global name 'FAVE' is not defined
为什么?为什么能找到UNKNOWN
却找不到FAVE
?是因为它在字典理解中吗?