gpt4 book ai didi

Python显式条件检查与隐式比较

转载 作者:行者123 更新时间:2023-12-05 03:12:41 25 4
gpt4 key购买 nike

不确定这是否属于 SO,如果确实属于这种情况,请社区版主将其移至相应的网络网站。

编写 Pythonic 代码的最重要原则之一是“显式优于隐式”。

在很多地方我看到了检查真值时的建议:

if a:
print 'eggs'

优于

if a == true:
print 'spam'

第二种方法显然更明确(或者是?),不确定为什么第一种方法受到青睐。我个人喜欢第一种方法,因为它更少而且(可以说)更清晰的代码。这是个人选择的问题还是我在这里遗漏了什么?

最佳答案

这里发生了几件事。首先,让我们解决“真实”的值(value)观。在 Python 中,大多数对象都是“真实的”,这意味着它们在诸如 if thing: do other_thing 的语句中评估为 true。

实际上有相当少的对象是“假的”,如记录here (我知道,Python 2.4 文档...别担心,它仍然有效)。

为什么这很重要?它可以让您编写更清晰的代码!如果您期望某事是还是不是,则无需检查到底是什么。这是一个空列表?好吧,这没什么。空字符串?依然没有。哦,我找回了一本只有一个键值对的字典?那是东西!这就是“Pythonic”的用武之地——这是社区制定的惯例。每个人都认为它有意义并且看起来更好,所以它被卡住了。

这使您的代码具有极大的灵 active 。您不必检查对象的类型,您只需要知道它是否包含数据。

如果您真的很关心一个对象是否等于另一个对象,您应该只检查 ==。

例子:

def check_shopping_list(shopping_list):
if shopping_list: # No need to check len(), just that it has contents
for item in shopping_list:
pass
else:
raise EmptyShoppingList("You should really add SPAM to your list")


def validate_input(input):
if not input: # catches empty inputs
raise MissingInput("Please try again")
else:
print("Validated!")


def read_file(file_name):
if os.path.exists(file_name): # returns True/False, but we don't have to explicitly state that
with open(file_name) as doc:
pass
else:
print("That file doesn't exist, do you want to create it?")

关于Python显式条件检查与隐式比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32901416/

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