2016-10-26 59 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) 

我認爲這是在你的情況下打印出更優雅的方式。