如何将str对象与None进行比较

时间:2016-10-26 05:09:10

标签: python-3.x flask

我遇到了一个问题,当我开发一个web使用python3 +烧瓶时,当名字没有放入时,我感到困惑,结果是打印为True

name = request.args.get('name')
if name is not None:
    print('True')
else:
    print('False')

我指的是python文档," A不是B"意味着A和B不是同一个对象。 我做了以下测试:

print(name) #None
print(type(name)) #<class "str">
print(type(None)) #<class "NoneType">

我找到了答案,但是当我使用以下格式时

if name:
    print('True')
else:
    print('False')

它打印True并打印(名称)我得到无 我必须写如下:

if name != str(None):
    print('True')
else:
    print('False')

使用它时我觉得有点不舒服,我怎么能以优雅的方式比较它。

2 个答案:

答案 0 :(得分:0)

获取字符串&#34;无&#34;作为请求的一部分,当您将None值作为上一个响应的一部分返回时,通常会发生这种情况。

示例:

# given a variable that is passed to a jinja template as None
# instead of as an empty string
name = None

将导致与&#34;无&#34;的链接作为一个字符串。

<a href="/some/link?name={{ name }}>click here</a>

而不是试图处理字符串&#34;无&#34;在您期望字符串的任何给定请求中,您应该将原始变量输出为空字符串:

name = None
...

# convert Nones to empty strings right before sending to jinja
if not name:
    name = ''

答案 1 :(得分:0)

print(True if "None" not in name else False)

我认为在您的案例中打印出更优雅的方式。