Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用返回True/False而不是直接将条件表达式强制转换为bool的if语句的技术原因_Python - Fatal编程技术网

Python 使用返回True/False而不是直接将条件表达式强制转换为bool的if语句的技术原因

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

我正在看一个名为“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!"
    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
。不是标准库,但仍然很标准。也就是说,如果给定的代码片段是为了预防,那么在这种情况下就没有帮助了。