首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无与Python中的空字符串

无与Python中的空字符串
EN

Stack Overflow用户
提问于 2011-12-15 19:50:10
回答 4查看 35.6K关注 0票数 11

我有一个连接到数据库的现有应用程序。它在Python2.7下运行。

应用程序使用None和"“填充没有值的变量的方式不一致。我想让这一点保持一致,并尝试以某种方式更新代码。

作为一个数据库人员,我认为Null与Null是不同的,并假定这将是空变量的正确选择,但当应用程序执行以下操作时,这会导致问题

代码语言:javascript
复制
if variable.upper() == "X":
    #Do something

因为如果变量是None类型,则会引发错误。

我能做到

代码语言:javascript
复制
if variable is not None and variable.upper() == "X":
    #Do something

但这似乎是不必要的冗长。

对于应该如何处理这个问题,有没有最佳实践?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-15 19:52:28

您可以通过编写以下代码来略微减少代码

代码语言:javascript
复制
if variable and variable.upper() == "X":
    #Do something

如果变量为none或空,则等同于False。

票数 13
EN

Stack Overflow用户

发布于 2011-12-15 19:53:09

代码语言:javascript
复制
if variable and variable.upper() == 'X'

少了一点冗长。如果这是您想要的东西,它还将以相同的方式处理None和空字符串

编辑:请注意,这与您发布的表达式处理空字符串的方式具有不同的语义...也就是说,在您的表达式中,如果变量是空字符串,将计算和的rhs,但在此表达式中不会,因为空字符串的计算结果为False

票数 4
EN

Stack Overflow用户

发布于 2011-12-15 19:54:33

如果(variable or '').upper() == 'X'variable and variable.upper() == 'X'都是速记,但它肯定不像原始代码那样紧凑。不过,我担心你不会好很多。

你可以这样做

代码语言:javascript
复制
def norm(s):
   return s or ''

...
if norm(s) == 'X':

但最终它也不会有太大变化。也许最初的区别并不是那么不一致,而是在上下文中非常务实?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8519647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档