TypeError: range() integer end argument expected, got int

TypeError: range() integer end argument expected, got int

我正在使用 Squish 6.4.2 测试我的 Qt 应用程序,使用 Python 2.7.10 作为测试脚本语言,并在尝试使用 range() 函数时收到以下错误消息:

TypeError: range() integer end argument expected, got int.

这是一个小代码示例和我在 Squish 中的输出:

def main():
    test.log(str(range(4)))
    test.log(str(range(int(4))))
[0, 1, 2, 3]
Error: Script Error
    Detail: TypeError: range() integer end argument expected, got int.

如您所见,range(4) 有效,但 range(int(4)) 无效。

我在 Squish 应用程序随附的 Python 版本的 Python 控制台中尝试了 运行 相同的代码,并且 range() 调用工作。

Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> range(4)
[0, 1, 2, 3]
>>> range(int(4))
[0, 1, 2, 3]
>>>

另外,当我将整数与转换的 int 进行比较时,Squish 中的比较结果是错误的。例如在 Squish 中:

def main():
    test.log(str(7<4))
    test.log(str(7 < int(4)))

给予

False
True

在 Python 控制台中,结果是正确的。

Squish int 不同于 Python int:

Squish's int represents the Squish type for an integer in the wrapper's C and C++ code.

Like the other hidden symbols, to access Python's int() function one can use it from the package __builtin__ (Python 2) or builtins (Python 3).

(其他类型也不同)

Squish's int vs. Python's int

或者在 Squish 手册中更一般地 Python Notes