Python函数中stock.get(merch,0)的,0作用?及代码TypeError报错排查
关于Python字典get方法中
,0的作用及报错分析 Hey there, let's break this down clearly for you:
一、stock.get(merch, 0)中,0的作用
Python字典的get()方法用于获取指定键对应的值,它包含两个参数:
- 第一个参数是要查找的目标键(这里是
merch) - 第二个参数是可选默认值,当目标键不存在于字典中时,就会返回这个默认值
所以stock.get(merch, 0)的具体逻辑是:
- 如果
merch是stock字典里的键,就返回它对应的库存数量(比如stock.get('leggos',0)会返回100) - 如果
merch不在stock里,就返回0,而不是Python默认的None
这个,0的核心作用是确保返回值始终是整数类型,这样后续和整数n做大小比较时不会触发类型错误。
二、报错TypeError: unorderable types: NoneType() >= int()的原因
你提供的代码里明明写了,0,理论上不会触发这个报错,但既然出现了这个错误,大概率是你实际提交到Codewars的代码中漏掉了第二个参数0,也就是写成了stock.get(merch)。
当你只写stock.get(merch)时:
- 如果
merch不在stock字典里,方法会返回None(Python中表示空值的类型) - 代码执行
None >= n时,因为NoneType和int是完全不同的类型,Python3不允许直接对它们做大小比较,就会抛出这个TypeError
而加上,0之后,不管merch是否存在,返回的都是整数(库存数或0),和n(整数)做>=比较就完全合法了。
举个简单的验证例子:
stock = {'football': 4} # 没有默认值的情况 print(stock.get('toy')) # 输出 None # 有默认值0的情况 print(stock.get('toy', 0)) # 输出 0
内容的提问来源于stack exchange,提问作者Alaskaboi
相关产品推荐
相关产品推荐

