2015-02-21 2 views
0

Вот пример кода:Python - Как я могу это сделать?

def test(something=None): 
    test = something is None 
    test2 = something is str 

    if(test == True): 
     return "test = True" 

    elif(test2 == True): 
     return "test2 = True" 

    else: 
     return 

Теперь, если я это побежал и напечатал в оболочке Python:

test() 

Я хотел бы получить

'test = True' 

Но, если я типа:

test("This is a string") 

Я не возвращаю «test2 = True», что я хочу, я просто ничего не получаю.

Я знаю, почему это происходит, но как бы я идти о делать это правильно и сделать это так, когда я набираю в оболочке Python:

test("String") 

или любую другую строку, я хотел бы получить вернулся «test2 = True "?

ответ

2

Строковый объект не идентичен объекту типа str. Это экземпляр этого типа, а не сам тип.

Вы можете использовать type() function для проверки типов объектов:

>>> type('this is a string') is str 
True 

но вы вообще хотите использовать isinstance() function вместо:

>>> isinstance('this is a string', str) 
True 
+0

Спасибо, но как бы я isinstance для None ? Я попробовал isinstance (None, None) и получил ошибку NameError – BlaZe

+0

@BlaZe: просто используйте 'is None' для этого теста или используйте' isinstance (object, type (None)) ', но последнее не очень pythonic .. –

Смежные вопросы