Python get()方法 有没有一种方法可以在不定义手动引发错误的方法的情况下引发错误 即使字典包含键,也会调用self.raiseError()方法。为什么呢
这是因为Python get()方法 有没有一种方法可以在不定义手动引发错误的方法的情况下引发错误 即使字典包含键,也会调用self.raiseError()方法。为什么呢,python,Python,这是因为.get首先计算默认参数,因为它需要知道在缺少键的情况下返回什么。正如注释中所指出的,如果您的字典包含任何布尔值,其计算结果为False(如空字符串、0、False、[]等),这种方法将引发错误self.dictionary.get(tuple\u row\u column)或self.raiseError();无论哪种方式,如果您想在缺少键的情况下引发错误,括号查找都更像python 对于你的第一个问题,你可以这样做 self.dictionary.get(tuple_row_colu
.get
首先计算默认参数,因为它需要知道在缺少键的情况下返回什么。正如注释中所指出的,如果您的字典包含任何布尔值,其计算结果为False
(如空字符串、0、False、[]等),这种方法将引发错误self.dictionary.get(tuple\u row\u column)或self.raiseError()
;无论哪种方式,如果您想在缺少键的情况下引发错误,括号查找都更像python
对于你的第一个问题,你可以这样做
self.dictionary.get(tuple_row_column, self.raiseError())
如果你想让它引起你的错误,你可以说:
self.dictionary[tuple_row_column] # Raises KeyError if tuple_row_column not present in dictionary keys.
Python是严格求值的,这意味着函数调用的所有参数都是在调用函数之前求值的。因此,无论是否需要,都必须运行
self.raiseError()
如果使用订阅而不是get
:
try:
self.dictionary[tuple_row_column]
except KeyError:
self.raiseError()
如果没有映射,这将引发KeyError
。self.dictionary.get(tuple\u row\u column)或self.raiseError()
将不起作用,如果布尔上下文中的值为False
,我认为对控制流使用异常是不可取的。
self.dictionary[tuple_row_column]