Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python get()方法 有没有一种方法可以在不定义手动引发错误的方法的情况下引发错误 即使字典包含键,也会调用self.raiseError()方法。为什么呢_Python - Fatal编程技术网

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]