📅  最后修改于: 2023-12-03 14:58:33.819000             🧑  作者: Mango
有一个门需要有两个人同时按下才能打开,一个人去按门把手,另一个人去按门的锁,已经有一个人按了把手,现在需要你来实现一个函数,使得另外一个人可以按锁。
函数原型为:
def door_click(k: int) -> Callable:
pass
输入:
k
: 一个整数,表示锁的编号。输出:
注意:
click = door_click(123)
click() # ""
题目要求实现一个函数,使得第二个人可以按门的锁。不难发现,这个函数需要返回一个可调用对象,可调用对象可以让第一个人按下门的把手,从而开启门的一半。然后,再使用返回的可调用对象让第二个人按下门的锁,从而开启整个门。
因此,我们可以将两个任务分别编写成两个函数。第一个函数为 door_handle()
,第二个函数为 door_lock(k)
。其中,door_lock()
函数需要接收一个锁的编号 k
,同时返回一个可调用对象。
接下来,让我们来看一下具体实现。
from typing import Callable
def door_handle() -> str:
"""
第一个人按门把手,打开门的一半
"""
return ""
def door_lock(k: int) -> Callable:
def click() -> str:
"""
第二个人按门锁,打开整个门
"""
return ""
return click
本题要求实现一个函数,返回一个可调用对象,这个可调用对象可以使得第二个人按下门的锁。我们可以将这个函数拆成两个任务,并分别编写两个函数。其中,第一个函数为 door_handle()
,第二个函数为 door_lock(k)
,它需要接收一个锁的编号 k
,同时返回一个可调用对象。代码实现中,我们使用了 Python 中的函数嵌套,以及闭包的特性,这样就能够记录每个锁的编号,使得每个可调用对象可以唯一对应到每个锁上。