在我的函数中,我检查输入的类型以使其有效(例如 - 对于检查'n'的素数的函数,我不想'n'作为一个字符串输入)。 问题发生在检查long
s和int
s。 在Python 3.3,他们删除long
型数,故有此问题发生:在Python 2.7和Python 3.3之间的函数中检查类型
def isPrime(n):
"""Checks if 'n' is prime"""
if not isinstance(n, int): raise TypeError('n must be int')
# rest of code
这普遍适用两种V2.7和V3.3。但是,如果我在Python 2.7程序中导入此函数,并为'n'输入long
-类型数字,如下所示:isPrime(123456789000)
明显会增加TypeError
,因为'n'类型为long
而不是int
。
那么,我该如何检查是否对于v2.7和v3.3是否为long
s和int
s的有效输入?
谢谢!
你的意思是'isPrime(123456789000L)'? – 2013-02-11 18:08:06
@DavidRobinson'isPrime(123456789000L)'和'isPrime(123456789000)'基本上是一样的:'isinstance(123456789000L,int)'和'isinstance(123456789000,int)'都返回False。 – 2013-02-11 18:09:36
关于什么版本的Python? 'isinstance(123456789000,int)'在Python 2.6和Python 2.7中为我返回'True'。 – 2013-02-11 18:11:00