gpt4 book ai didi

python - 是否有更有效的单行代码来根据条件初始化变量?

转载 作者:行者123 更新时间:2023-11-28 20:52:54 24 4
gpt4 key购买 nike

atype 变量可以通过单行初始化吗?

def detect(dt,result):
""" prints the type of date """
atype = 'unknown'
if 'greg' in result:
atype = 'Gregorian'
elif 'eth' in result:
atype = 'Ethiopian'

print '%s is in %s format.' % (dt,atype)

最佳答案

您可以使用一对条件表达式——根本不需要括号;就像 Python 知道 1 + 2 + 3 应该从左到右合理地完成一样,所以条件表达式可以一个接一个地写,而不用担心解释器会混淆。然而,换行符和缩进对于可读性很重要,所以我通常会这样做:

atype = ('Gregorian' if 'greg' in result
else 'Ethiopian' if 'eth' in result
else 'unknown')

如果您在每个 else 之前按“enter”键,这种缩进形式不仅是大多数编辑器在任何情况下都会生成的缩进形式,而且当我在稍后回来阅读我自己或其他人的代码——毕竟这是我们使用 Python 的一个重要原因,对吧? :)

编辑: 当然,我意识到这只是单行代码,因为 Python 将续行视为一行代码;所以我想我的回答是你的程序对我来说似乎有点密集,作为 Python 的一行物理,但如果写成一行 逻辑 对我来说效果很好Python!

编辑: 进一步说明:当然,我认识到我的代码片段违反了 PEP-8,它说要结束与运算符的连续行——所以 PEP-8 会让我移动 else 单词直到前几行的结尾。我只能说这是我不同意的 PEP-8 规则之一,我经常违反它,因此我生成了更具可读性的代码。我认为我在这一点上与 PEP-8 的不同之处在于我有数学排版背景,并且正如 Donald Knuth 在 TeXBook 中强调的那样,“显示的公式总是在 before 二元运算和关系之前中断”(第 13 页)。 195).

关于python - 是否有更有效的单行代码来根据条件初始化变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949180/

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