Python if语句判断None时无法匹配空输入打印预期内容的原因
问题根本原因
- Python 3中
input()函数的返回值永远是字符串类型,不会返回None。代码里初始给value赋值的None,会在执行value = input()时被返回值完全覆盖:即使用户直接按回车不输入任何内容,input()拿到的也是长度为0的空字符串"",不是None。 - 空字符串和None是完全不同的两个值:
None是NoneType类型的单例,代表“无有效值”的语义;空字符串是str类型的合法值,只是内容长度为0,二者类型不同,"" == None的判断结果永远为False,因此if分支永远不会触发。 - Python中判断值是否为None的规范写法是
is None,而非== None:None是全局唯一的单例对象,is直接判断对象的内存身份,比值相等判断更严谨。
修正参考代码
如果需要识别用户直接回车的空输入(可兼容全空格输入、None值场景),可参考如下写法:
value = None print("Insert a value:") value = input() if value is None or value.strip() == "": print("Any value.!") else: print("Your value is different to None: ", value)
内容的提问来源于stack exchange,提问作者Eduardo Espinal
相关产品推荐
相关产品推荐

