Является ли ключевое слово is в Python функцией? - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь понять, под каким определением находится ключевое слово «is» в Python.

В курсе, который я беру, инструктор уделяет большое внимание разнице между функциями и методами (функциями класса). Когда его спросили, инструктор сказал, что это функция, и сослался на класс Operator в Python и это метод 'is_' (который является простым методом, позволяющим легко использовать оператор, а не даже упомянутое ключевое слово).

a is b
operator.is_(a,b)

Я испытываю трудности с ответом, который мне дали. Я был бы очень признателен, если бы вы, основываясь на акценте моих инструкторов на функциях и методах, объяснили, падает ли «is» в какой-либо из них. Если нет, как правильно его просмотреть?

Ответы [ 2 ]

4 голосов
/ 01 апреля 2019
  • is (как в a is b) является оператором . В частности, бинарный оператор - потому что он принимает два объекта (a и b в примере) в качестве входных данных.

    Что отличает операторы от функций, так это синтаксис - два операнда идут по обе стороны от оператора . Если бы is была функцией, она была бы вызвана как is(a, b).

  • operator.is_ - это функция , которая принимает два аргумента (давайте назовем их a и b) в качестве входных данных и возвращает a is b. Это функциональный эквивалент оператора is. (Документация модуля operator даже называется «Стандартные операторы как функции».)

    Далее, operator.is_ - это , а не метод. operator является модулем , а не классом, а is_ является функцией, определенной в этом модуле.

1 голос
/ 01 апреля 2019

Оператор is проверяет, относятся ли оба операнда к одному и тому же объекту или нет. Это сравнивает тождества. Принимая во внимание, что == сравнивает значения обоих операндов и проверяет равенство значений. Сравнивает, проверяя на равенство.

Ниже приведен простой пример:

# [] is an empty list

list1 = [] 
list2 = [] 
list3 = list1 

if (list1 == list2): 
    print("True") 
else: 
    print("False")

if (list1 is list2): 
    print("True") 
else: 
    print("False") 

if (list1 is list3): 
    print("True") 
else:     
    print("False")

Вывод должен быть следующим:

True
False
True
  • В приведенном вами примере:
  • in a is b, is - оператор
  • в operator.is()
  • operator - это модуль
  • is() - это функция , определенная в модуле operator.
...