我正在使用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控制台中结果还是正确的。
答案 0 :(得分:2)
Squash int与Python int不同:
Squish的int表示Squish类型的整数 包装程序的C和C ++代码。
与其他隐藏符号一样,访问Python的int()函数 可以从__builtin__(Python 2)包或Builtins(Python 3)。
(其他类型也不同)
请参见Squish's int vs. Python's int
或更普遍地说,是《 Squish手册》中的Python Notes。