【发布时间】:2021-04-21 19:27:53
【问题描述】:
假设我有函数f如下:
def f(c=None):
return 42 if c is None else c
那么我无法从这个函数中得到None。现在您可能会想“好吧,只需检查另一个值,例如 2128.213 或其他值”,但我无法从函数中获取该特定值,可以吗?
这就是为什么我想在可能的情况下区分 f() 和 f(None) 以便我可以拥有
f() -> 42
f(None)-> None
请记住,这是一个简化的示例。在实践中,它是一个类的 __init__(...) 函数,具有多个位置参数,在本例中我想将其处理为 c。
【问题讨论】:
-
为什么你需要知道 None 来自这里还是那里?你想达到什么目的?
-
如果
f()与f(None)相比,您想做什么不同的事情? -
不正确的逻辑即使你的 c 没有你仍然会得到 42
-
等等,你想区分定义中的 None 和用户传递的 None 吗?
-
使用类似
_DEFAULT = object()的默认值,在同一个模块中定义 - 没有其他模块可以传递与此相同的值。