Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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?_Python_Python 3.x_If Statement_Types - Fatal编程技术网

为什么Python中的类型返回True?

为什么Python中的类型返回True?,python,python-3.x,if-statement,types,Python,Python 3.x,If Statement,Types,我的理解正确吗?if语句只有在其计算结果为True时才会“执行” 如果是,类型返回True的目的是什么 这条规则背后的逻辑是什么 有人能给我举个例子说明它在哪里有用吗 例如: """ Example """ def test(x): if float: print("success") test(9) test('\ntesting') 返回: 包括类型在内的所有对象(作为类型的实例)本质上都是真的,因为它们表示存在基础类型的值,而不是表示没有任何类型的值的无对象。

我的理解正确吗?if语句只有在其计算结果为True时才会“执行”

如果是,类型返回True的目的是什么

这条规则背后的逻辑是什么

有人能给我举个例子说明它在哪里有用吗

例如:

""" Example """

def test(x):
    if float:
        print("success")

test(9)
test('\ntesting')
返回:


包括类型在内的所有对象(作为类型的实例)本质上都是真的,因为它们表示存在基础类型的值,而不是表示没有任何类型的值的无对象。如果None仅仅因为是NoneType的实例而求值为true,这是没有用的

某些类型的空字符串和容器类型的空实例的一些实例,也可以称为“false”,因为这样便于考虑。 在您自己的类中,您可以覆盖特定实例的真值,方法是覆盖或_len _u;以针对特定实例返回0或False。

来自文档:

任何对象都可以测试真值,用于if或while 条件或作为下面布尔运算的操作数。以下 值被认为是错误的:

没有

假的

任何数字类型的零,例如0、0L、0.0、0j

任何空序列,例如,,[]

任何空映射,例如,{}

用户定义类的实例,如果该类定义了 __非零或uuu_u_u_u_u_uu方法,当该方法返回整数零或布尔值False时。[1]

>所有其他值都被认为是真的,因此许多类型的对象都是真的 永远正确

具有布尔结果的操作和内置函数始终 除非另有说明,否则返回0或False表示False,返回1或True表示True 规定的。重要例外:布尔运算或and始终 返回其中一个操作数

由于所有类型都是从object派生的,uuuu nonzero_uuuuuu不返回False或整数零,并且它们没有uuu len_uuuu方法,因此将其视为True

还有一件有趣的事: __浮点数的非零是

以下是一些关于这方面的信息:
基本问题是:

这条规则背后的逻辑是什么

这条规则是用来定义Python应该如何操作的:只要有一个if语句的值不是True或False,结果就应该是清晰的。所有实现都是一样的

这并不意味着这是一种好的风格。也不应该使用它

if float(3.14):
    print("is not a proper way to program")
 else:
    print("even it is clearly defined what will happen")

就个人而言,我不知道会印什么。我不会查它,反正它不好。我总是告诉我的学生:即使编译器理解了,你们学校也不会

这是文件。。。是的,这就是我的问题:为什么类型返回true?我的问题不是:为什么向If语句返回True会执行If语句的主体。为什么类型返回True?阅读文档,它说所有其他值都被认为是正确的。基本上,某些特定值为假,其他所有值默认为真。供将来参考:如果只包含与特定问题相关的代码,即如果float:print'float is True',您将不会太困惑。在您的示例中,您有一个传递参数并使用不同参数调用它的函数,这一事实非常令人困惑,并且导致了至少一个与问题无关的答案。@RubenBaden不用担心。从一个更大的例子中找出问题的根源是一项需要发展的技能;我只是想帮助发展这项技能。我用None替换了Float,但打印失败了!非常感谢你的回答。现在对我来说有意义了!你是说,利用真实和虚假的价值观,比如如果我的清单:或者如果结果:是不应该使用的糟糕风格吗?这要看情况而定。诚然,对每个人来说,真假都是清楚的。如果你的听众不是专家,那就坚持下去。但举例来说,库代码是专家只读的,因此允许使用更多类型。就个人而言,如果你的听众不是专家,你应该告诉他们真实和虚假的价值观,而不是向他们展示虚假的、糟糕的代码。你说,相信一个空的是假的是什么意思?当然,空列表的计算结果为假值。这完全是有意的,它的目的是让您编写更整洁、更清晰的代码。编写避免这一事实的代码,再加上您武断认为不可用的任何其他语言特性,只会导致更糟糕的代码,而在任何上下文中将其用作任何类型的教学辅助工具,只会让读者对Python的理解更差。这个答案很容易让人误解。它从来都不是糟糕的风格,而你的回答基本上说它总是糟糕的风格。就个人而言,如果我发布了一个误导性的、有害的答案,然后被告知它有多糟糕,我会删除它。