В чем разница в этих двух определениях isinstances ()? - PullRequest
0 голосов
/ 19 ноября 2018
  1. isinstance(list(), type(mylist))

  2. isinstance(mylist, list)

Есть ли разница, кроме скорости?Я вижу, 2 быстрее.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

При правильном использовании результаты будут такими же. Но вы должны использовать только вторую версию.

Нет необходимости создавать пустой объект, т.е. list(), и нет причин для дополнительного вызова функции через type.

Существует также опасность, что вы будете делать что-то вроде этого:

from collections import OrderedDict

array = dict()

res1 = isinstance(OrderedDict(), type(array))  # True
res2 = isinstance(array, OrderedDict)          # False
0 голосов
/ 19 ноября 2018

Первый очень неэффективен, так как вы сначала создаете новый объект списка, затем идентифицируете тип my_list и затем проверяете, одинаковы ли они оба.

Второй вариант - как предполагается использовать функцию isinstance.

...