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)
部分,所以不要打高尔夫球。
答案 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)
,那么您应该传递int
或str
值:
>>> type(1)
<type 'int'>
>>> type(1) is int
True
而不是类型对象本身。
答案 1 :(得分:2)
您正在将类型传递给该函数,然后使用该类型的类型。因此,当您致电create(int)
时,该功能正在使用type(int)
,即类型type
,它与您的任何if语句都不匹配。