gpt4 book ai didi

python - 是否有与 C# 等效的 Python?和 ??运营商?

转载 作者:太空狗 更新时间:2023-10-29 20:49:10 24 4
gpt4 key购买 nike

例如,在 C# 中(从 v6 开始)我可以说:

mass = (vehicle?.Mass / 10) ?? 150;

如果有车辆,则将质量设置为车辆质量的十分之一,但如果车辆为空(或具有空质量,如果 Mass 属性为可空类型)则设置为 150。

我可以在 C# 应用程序的脚本中使用 Python(特别是 IronPython)中的等效结构吗?

这对于显示可由其他值修改的值的默认值特别有用 - 例如,我可能在脚本中为我的星际飞船定义了一个装甲组件,它总是占用飞船上可用空间的 10%安装在上,它的其他属性也会缩放,但我想显示装甲大小、生命值、成本等的默认值,以便您可以将它与其他船舶组件进行比较。否则,我可能不得不编写一个复杂的表达式来执行一两次空值检查,就像我在 v6 之前的 C# 中必须做的那样。

最佳答案

不,Python(还)没有 NULL 合并运算符。

有一个提议 ( PEP 505 – None-aware operators ) 添加这样的操作符,但是对于是否应该将这些操作符添加到语言中以及如果应该添加这些操作符将采取什么形式,还没有达成共识。

来自实现部分:

Given that the need for None -aware operators is questionable and the spelling of said operators is almost incendiary, the implementation details for CPython will be deferred unless and until we have a clearer idea that one (or more) of the proposed operators will be approved.

请注意,Python 并没有真正null 的概念。 Python 名称和属性始终 引用某物,它们永远不是null 引用。 None 只是 Python 中的另一个对象,社区不愿意让那个对象如此特殊以至于需要自己的运算符。

在实现之前(如果有的话,IronPython 会 catch 那个 Python 版本),您可以使用 Python 的 conditional expression实现相同的目标:

mass = 150 if vehicle is None or vehicle.Mass is None else vehicle.Mass / 10

关于python - 是否有与 C# 等效的 Python?和 ??运营商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com