2015-05-02 3 views
-1

Я новичок в Python и пытаюсь понять типы. В частности, может кто-нибудь объяснить, почему я получаю эти результаты?Попытка понять тип int

>>> start = 1 
>>> start is int 
False 
>>> type(start) 
<class 'int'> 

Я спрашиваю, потому что я пытаюсь запустить тест в сценарии и не могу понять, почему он терпит неудачу испытания, и я боюсь, чтобы бросить вход как межды потому, если он ISN» t, я хочу убедиться, что он не пройдет этот тест. вот код:

def slice(self, start=0, stop=0, step=1): 
    if start != 0 and start is not int: 
     for item in self.data: 
      if start in item: 
       start = self.data.index(item) 

Но когда я делаю это:

slice(1,10) 

Он проваливает «старт не ИНТ» и падает в цикл.

Любая помощь, пожалуйста?

+0

А после того, как я опубликовал это, я понял, что эта строка кода избыточна: if start! = 0 и start is not int: , но при изменении на просто: если start not int: он все еще терпит неудачу. –

ответ

1

Из документации Python 3:

Операторы это и не проверить идентичность объекта: х у истинно тогда и только тогда, когда х и у того же объекта. x не означает, что y дает обратное значение истины. [4]

start is 1 while int - класс Python. Вот некоторые примеры кода, которые могут помочь вам:

>>> start = 1 
>>> start is int 
False 
>>> start == int 
False 
>>> start is 1 
True 
>>> start == 1 
True 
>>> type(start) == int 
True 

Вы должны использовать тип() или isinstance() (как предложил Симеон).

+0

Большое спасибо! Я вижу сейчас. –

1

Вы должны сделать: isinstance(start, int).

start is int проверяет start является ли тип int, не start является ли экземпляр типа int.

>>> start = 1 
>>> start is int 
False 
>>> isinstance(start, int) 
True 
+0

Отличное спасибо! –

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