艰苦地学习Python ex39
在“艰苦学习Python()”的练习39中,定义了以下函数(艰苦地学习Python ex39,python,python-2.7,Python,Python 2.7,在“艰苦学习Python()”的练习39中,定义了以下函数(get\u slot()和get()): 为什么在调用get_slot()时写入default=default 在我看来,简单地用“default”调用get\u slot()就足够了?->获取插槽(aMap、键、默认值) default=default是否与命名vs位置函数参数有关?(正如这里所讨论的:) 或者说,default=default是完全出于不同的原因完成的吗?default是函数get_slot()的“关键参数”,其默认
get\u slot()
和get()
):
为什么在调用get_slot()时写入default=default
在我看来,简单地用“default”调用get\u slot()
就足够了?-><代码>获取插槽(aMap、键、默认值)
default=default
是否与命名vs位置函数参数有关?(正如这里所讨论的:)
或者说,default=default
是完全出于不同的原因完成的吗?default
是函数get_slot()
的“关键参数”,其默认值为None。
当您调用get\u slot()
而不指定“default”时,它接受值“None”。
在上面的示例中,您将关键参数“default”设置为“default”,这是传递给函数“get”的参数,因此它接受valueNone
因此,在这种特殊情况下,您是否调用:
获取插槽(aMap,钥匙)
或
get\u插槽(aMap,key,default=default)
但是,如果将一个不同于None
的值传递给get
函数,则get\u插槽中的default
变量将采用一个不同于None
的值
我希望这能澄清一点。在本例中也是如此,但通常情况下,即使在位置匹配时也使用关键字参数名称是一种好的做法(更安全)。好的,因为“default”是一个命名参数,所以在调用函数时使用关键字参数“default=”是一种好的做法?我理解正确了吗?感谢您的回答,出于某种原因,编辑我问题的人将代码从“无”更改为“1”(我已将其更改为“1”,并添加了一个指向“艰苦学习Python”示例的链接,以便人们可以现场查看代码)。这会改变你的答案吗?谢谢你的澄清。它实际上改变了答案,因为最后您的默认值将取None
。在函数之间传递值的方式不会改变,但是最终结果会改变。我会更新答案的!
def get_slot(aMap, key, default=None):
"""
Returns the index, key, and value of a slot found in a bucket.
Returns -1, key, and default (None if not set) when not found.
"""
bucket = get_bucket(aMap, key)
for i, kv in enumerate(bucket):
k, v = kv
if key == k:
return i, k, v
return -1, key, default
def get(aMap, key, default=None):
"""Gets the value in a bucket for the given key, or the default."""
i, k, v = get_slot(aMap, key, default=default)
return v