将源代码部署到ubuntu-python 2.7后if语句不起作用
我正在从事一个python项目,面临一个问题,我有一段代码,如bellow:将源代码部署到ubuntu-python 2.7后if语句不起作用,python,python-2.7,Python,Python 2.7,我正在从事一个python项目,面临一个问题,我有一段代码,如bellow: if published_to is not '*': if 'T00:00:00.000Z' not in published_to: published_to = published_to.replace('T00:00:00.000Z', '') published_to = published_to.split('-')[::-1] published_t
if published_to is not '*':
if 'T00:00:00.000Z' not in published_to:
published_to = published_to.replace('T00:00:00.000Z', '')
published_to = published_to.split('-')[::-1]
published_to = '-'.join(published_to) + 'T00:00:00.000Z'
当我用python 2.7在windows上运行我的服务器时,上面的代码运行得很有魅力,但当我用相同版本的python将项目部署到Ubuntu 16.04时,它会通过“if”语句体运行,无论
发布到是否等于*
。那么,有谁能告诉我原因吗?如果您想检查发布到的是否等于'*'
,请使用=代码>:
if published_to != '*':
使用is not
检查对象标识,这是一个比相等性更强的测试,而不是您在这里寻找的。(基本上,您可以有两个不同的字符串对象,它们包含相同的文本-不同的对象,但它们是相等的)。您可以显示将published\u设置为
的代码吗?似乎在这两台服务器上得到了不同的答案。您是否确实验证了发布到
的所包含的内容?我的第一个怀疑是Windows系统与非Windows系统的时间存储方式不同。Windows将硬件时钟更改为本地时间。每隔一个系统将硬件时钟更改为UTC,并根据需要转换为本地时间。在您验证了发布到
的所包含的内容后,您可以在此处进行检查。谢谢,这是有效的,但为什么“不是”语句在windows上运行,而在Ubuntu上运行?@user2905416:我说不出为什么您可以看到这两个系统之间的行为差异,但这可能是由于不同的Python次要版本或系统之间Python实现的差异造成的。特定系统上的特定Python实现是否使用字符串被视为一个实现细节。