繁体   English   中英

“是”不在python IDE中工作,而是在命令行中工作

[英]“is” not working in python IDE but working in command line

我无法理解为什么会发生这种情况..

看看这个python代码:

    word = raw_input("Enter Word")
    length = len(word)

    if word[length-1:] is "e" :
         print word + "d"

如果我输入“爱”,它的输出必须“被爱”。 所以,当我在PyScripter IDE中编写它时,它既不显示错误也不显示输出。 但我在python shell中尝试了相同的代码,它的工作原理!

我想知道为什么会这样。

is关键字仅在字符串具有完全相同的标识时才起作用,即使字符串具有相同的值,也不能保证。 您应该使用==代替的is这里比较字符串的值。

或者更好的是,使用endswith

if word.endswith("e"):
     print word + "d"

你应该使用==在这种情况下,而不是is Is对象的标识进行检查,即id('e')必须与切片返回的字符串的id相等。 碰巧,cpython将单字母字符串(和小整数)存储为常量,因此这通常有效。 但它不可靠,因为任何其他实现都不能使用它,然后即使"e" is "e"也不必产生​​True。 只需使用== ,它应该工作。

编辑: endswith提到的endwith在这种情况下更好。 更安全,更具可读性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM