Python dict.pop(key[,default])中“default”参数的默认值是多少?

Python dict.pop(key[,default])中“default”参数的默认值是多少?,python,Python,似乎可以区分用户指定的默认值和实际的默认值。 例如,实际结果: 我的dict.pop'non-exist-key',无 我的dict.pop'non-exist-key' 回溯最近一次呼叫上次: 文件,第1行,在 KeyError:“不存在密钥” 我期望dict.pop的默认参数有一个默认值,否则我期望结果: 在调用方而不是calleemy_dict.pop中引发异常 我的dict.pop'non-exist-key' TypeError:my_dict.pop缺少1个必需的位置参数:“defa

似乎可以区分用户指定的默认值和实际的默认值。 例如,实际结果:

我的dict.pop'non-exist-key',无 我的dict.pop'non-exist-key' 回溯最近一次呼叫上次: 文件,第1行,在 KeyError:“不存在密钥” 我期望dict.pop的默认参数有一个默认值,否则我期望结果:

在调用方而不是calleemy_dict.pop中引发异常 我的dict.pop'non-exist-key' TypeError:my_dict.pop缺少1个必需的位置参数:“default”
pop方法从具有给定键的字典中删除并返回元素

语法是dictionary.popkey[,默认值]

pop方法返回:

如果找到键-从字典中删除/弹出元素 如果找不到键-默认值指定为第二个参数 如果找不到键且未指定默认参数,则会引发KeyError异常

示例_dict={a:1,b:2}

我们在这里草签了这本词典

example_dict.pop("c", None)
此语句返回None,正如我们在第二个参数中指定的那样

example_dict.pop("c")
这将引发keyerror

def pop(self, *args):
    """
    Remove and return the value for a key.
    """
    have_default = len(args) == 2
    try:
        v = self[args[0]]
    except KeyError:
        if have_default:
            return args[1]
        raise
    else:
        del self[args[0]]
        return v

这是pop函数的纯python实现。

没有,这就是为什么您会得到错误。您链接的文档确切地说,如果没有给出默认值,并且键不在字典中,则会引发一个键错误。@roganjosh我相信有一个默认值,看看我的最新消息。你为什么相信?我意识到我自己并不理解。这促使我问。我之所以删除,是因为我不能确定我是否给了您正确的信息,为什么它不重新生成所需位置参数的一个TypeError?因为这是一个可选参数,所以即使没有给出参数,函数调用也会起作用。如果答案能澄清你的疑问,请接受。它不能澄清我。我仍然不知道python中真正的实现细节,但我意识到这些东西可以在python代码中实现,而不仅仅是在def语句中提供一个常规的默认参数。