为什么这个函数返回NoneType?

时间:2014-07-30 18:09:09

标签: python python-2.7 types user-defined-functions

def create(Type):
    if type(Type) == int:
        return 1
    if tyoe(Type) == str:
        return "String"

print create(int)
print create(str)  #both of these print 'None'

由于我不是蟒蛇经验丰富,我不太了解,但这让我感到困惑。看来这个函数应该返回给定的类型,但它返回None,我不知道为什么。

注意:我需要if type(Type)部分,所以不要打高尔夫球。

2 个答案:

答案 0 :(得分:4)

因为type(int)不是int;它是type

>>> type(int)
<type 'type'>

要测试类型,请直接测试 ,最好使用is,因为类型是单例:

if Type is int:
    return 1

但你最好在这里使用映射:

return {int: 1, str: 'String'}[Type]

如果您希望使用type(something),那么您应该传递intstr

>>> type(1)
<type 'int'>
>>> type(1) is int
True

而不是类型对象本身。

答案 1 :(得分:2)

您正在将类型传递给该函数,然后使用该类型的类型。因此,当您致电create(int)时,该功能正在使用type(int),即类型type,它与您的任何if语句都不匹配。