Python中的Swift Optionals(或Haskell's Maybe)?

Ana*_*Ana 10 python haskell optional maybe swift

在斯威夫特我能做到var?.prop.这导致nil,如果varnil,否则将导致价值prop的财产var.

同样地,我可以做var >>= prop在Haskell,这给了我NonevarIS None,否则它给我应用的价值prop里面的值var(裹Just).

Python中有相应的东西吗?

Bre*_*arn 5

其他答案在建议条件表达式的正确轨道上,但在如何做到这一点上是错误的.你可以这样做:

None if var is None else var.prop
Run Code Online (Sandbox Code Playgroud)

或者,等效地

var.prop if var is not None else None
Run Code Online (Sandbox Code Playgroud)

有一个关于向Python添加这样一个特性的PEP草案,并且已经在Python-ideas邮件列表上对它进行了讨论.它似乎不会在不久的将来添加(如果有的话),但阅读PEP将让您了解一些现有的和提出的处理方法.

  • @EliKorvigo:在我开始写这篇文章时你的答案是错误的,但你随后对其进行了编辑。 (2认同)