gpt4 book ai didi

python - python 变量的 ruby​​ 风格条件设置

转载 作者:行者123 更新时间:2023-11-30 23:40:15 24 4
gpt4 key购买 nike

在 Ruby 中,如果你想有条件地设置变量的值,你可以这样做:

foo = myhash[ "bar" ] || myhash[ "baz" ]

如果 foo 存在,它将把 foo 的值设置为 myhash[ "bar"],否则它将把 foo 设置为 myhash[ "baz"]。如果两者都不存在,它将把 foo 设置为 nil。

在 Python 中,如果尝试这种类型的赋值,将会出现语法错误。此外,Python 会在 myhash[ "baz"] 上抛出 KeyError,而不是将其设置为 None。在我看来,在 Python 中条件设置 foo 的唯一方法是编写一个大的多行条件语句,但我真的很想像 Ruby 一样在一行中完成此操作。有什么办法可以做到这一点吗?

最佳答案

您收到语法错误,因为 python or operator 的语法不同,您需要显式要求 Python 使用 .get() method 从字典查找中返回 None :

foo = myhash.get('bar') or myhash.get('baz')

因为 .get() 采用默认值返回,而不是查找的键(默认为 None,您也可以将其拼写为:

foo = myhash.get('bar', myhash.get('baz'))

这还有一个额外的好处,如果 myhash['bar'] 为 false-y(在 bool 上下文中计算为 False,例如空序列或数字 0),它仍然会返回 myhash['bar'] 而不是 myhash['baz']

关于python - python 变量的 ruby​​ 风格条件设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761488/

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