Python 使用返回True/False而不是直接将条件表达式强制转换为bool的if语句的技术原因
我正在看一个名为“Advanced Python”的在线课程,并注意到一些情况,其中使用了返回Python 使用返回True/False而不是直接将条件表达式强制转换为bool的if语句的技术原因,python,Python,我正在看一个名为“Advanced Python”的在线课程,并注意到一些情况,其中使用了返回True的if语句,而不是直接将条件表达式作为布尔值返回。下面是一个基于我在课程中看到的示例: def foo(x): if x.isupper(): return True return False def bar(x): return bool(x.isupper()) def usage(): s = "Hello World!&qu
True
的if语句,而不是直接将条件表达式作为布尔值返回。下面是一个基于我在课程中看到的示例:
def foo(x):
if x.isupper():
return True
return False
def bar(x):
return bool(x.isupper())
def usage():
s = "Hello World!"
return list(filter(foo, s)
由于我在其他语言方面比较有经验,是否有技术原因让我更喜欢foo
而不是bar
?也许这是一种防御性风格,与不一定知道参数的类型有关?也许因为Python是动态类型的,所以使用foo
方法返回对返回的类型的更多控制的感觉-但是没有用。除此之外,这些方法是等效的。可能因为Python是动态类型的,所以使用foo
方法返回对返回的类型的更多控制的感觉-但是没有用。除此之外,两种方法是等效的。两者都不是首选方法。只要返回x.isupper()
您几乎不需要显式地转换为bool
,任何对象都可以在布尔上下文中使用,例如,当您传递到过滤器时,当然不需要它。。。坦率地说,如果你正在学习一门名为“高级Python”的课程,并且他们有很多类似于def foo
的结构,我会。。。这两种说法都不地道isupper
返回一个bool
另外,不要命名变量str
,它会隐藏内置类型。正如其他人评论的那样,这只是作者选择的首选项。@PeterWood至少有一个主流类的示例,其中有一个isupper
方法不返回bool,即<代码>numpy.chararray
。不是标准库,但仍然很标准。也就是说,如果给定的代码片段是作为预防措施,那么在这种情况下它将不会有帮助。两者都不是首选。只要返回x.isupper()
您几乎不需要显式地转换为bool
,任何对象都可以在布尔上下文中使用,例如,当您传递到过滤器时,当然不需要它。。。坦率地说,如果你正在学习一门名为“高级Python”的课程,并且他们有很多类似于def foo
的结构,我会。。。这两种说法都不地道isupper
返回一个bool
另外,不要命名变量str
,它会隐藏内置类型。正如其他人评论的那样,这只是作者选择的首选项。@PeterWood至少有一个主流类的示例,其中有一个isupper
方法不返回bool,即<代码>numpy.chararray
。不是标准库,但仍然很标准。也就是说,如果给定的代码片段是为了预防,那么在这种情况下就没有帮助了。