【问题标题】:how compare a str object with None如何将 str 对象与 None 进行比较
【发布时间】:2016-10-26 05:09:10
【问题描述】:

遇到一个问题,我用python3+flask开发web的时候,name没有输入的时候,我一头雾水,结果是True in print

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

我参考python文档,“A is not B”表示A和B不是同一个对象。 我做了以下测试:

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

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

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

它打印 True 并且 print(name) 我得到 None 我必须这样写:

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

这样用感觉有点不舒服,怎么比较优雅呢。

【问题讨论】:

  • 听起来name 包含字符串'None'。您是否期望它具有不同的价值?
  • 非常感谢。这就对了。我是多么愚蠢,哈哈。

标签: python-3.x flask


【解决方案1】:

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

例子:

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

将产生一个带有“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 = ''

【讨论】:

    【解决方案2】:
    print(True if "None" not in name else False)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 2012-01-21
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多