def check(nametype): def decorator(func): def wrapper(*args, **kwargs): for arg in args: if not isinstance(arg, nametype): return False for kwarg in kwargs.values(): if not isinstance(kwarg, nametype): return False return func(*args, **kwargs) return wrapper return decorator @check(float) def fun(i): return i print(fun(4)) # 4.0 print(fun(6)) # 6.0 print(fun(i=6)) # False print(fun('a')) # False print(fun([6])) # False
时间: 2023-12-28 17:03:34 浏览: 107
这段代码定义了一个 `check` 装饰器,用于检查函数的参数和关键字参数是否符合指定的类型。在这里,指定的类型为 `float`。如果参数或关键字参数不是 `float` 类型,则返回 `False`,否则调用原函数并返回其结果。
下面是这段代码的输出结果:
```
4.0
6.0
False
False
False
```
因为 `fun` 函数的参数类型要求是 `float`,所以只有 `fun(4)` 和 `fun(6)` 符合要求,返回的结果为 `4.0` 和 `6.0`。其他的调用均不符合要求,返回 `False`。
阅读全文