Python 中的 is 运算符用于比较两个整数的身份对象,这意味着它检查它们是否引用内存中的同一对象。但是,在处理非缓存整数时,is 运算符可能会以意想不到的方式运行。
如果对函数内的两个整数计算 is 运算符,它将返回 True,表明它们引用同一个对象。但是,如果在函数外部计算相同的 is 运算符,它将返回 False,表明它们引用不同的对象。
这是因为 Python 处理整数缓存的方式。对于 [-5, 256] 范围内的整数,Python 会缓存整数对象并重用它们以供后续引用。这意味着当您将这个范围内的整数分配给函数内的多个变量时,它们都引用同一个缓存对象,因此 is 运算符返回 True。
但是,当您在函数外部分配一个整数,它会创建一个新的整数对象并且不使用缓存的对象。因此,当您在函数外部比较两个整数时,它们引用不同的对象,并且 is 运算符返回 False。
为了避免这种意外行为,建议使用相等运算符(==) 来比较整数的值,而不是 is 运算符。
以上是为什么“is”运算符对于 Python 中函数内部和外部的非缓存整数的行为不同?的详细内容。更多信息请关注PHP中文网其他相关文章!