2016-10-26 61 views
-1

一个STR对象我遇到一个问题,当我开发一个Web应用python3 +烧瓶,当名字没有在说,我很困惑,其结果是在打印如何比较无

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') 

它打印真实和打印(名称),我得到无 我必须写像下面这样:

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

我觉得有点不舒服的时候像这样使用它,我怎么能在一个优雅的方式进行比较。

+0

听起来像'name'包含字符串'None'。你期望它有不同的价值吗? – dirn

+0

非常感谢。这就对了。我是多么愚蠢,哈哈。 – Allan

回答

0

当您返回None值作为先前响应的一部分时,通常会发生字符串“无”作为请求的一部分。

实施例:

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

将导致具有 “无” 作为字符串的链接。

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

而不是试图来处理在你期望一个字符串的任何给定的请求字符串“None”,你应该输出的原始变量为空字符串:

name = None 
... 

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

这真是一个很好的建议。谢谢 – Allan

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

我认为这是在你的情况下打印出更优雅的方式。