isinstance(num1 and num2, int)
То же, что и
t1 = num1 and num2
if isinstance(t1, int)
Результат двух чисел и между ними возвращает первое значение Falsy, если оно есть, иначе возвращает последнее значение в выражении.
Некоторые примеры:
In [24]: 1.4 and 2
Out[24]: 2
In [25]: 1.4 and 2 and 3
Out[25]: 3
In [26]: 1.4 and 0 and 2
Out[26]: 0
Для получения дополнительной информации см. Странное использование операторов "и" / "или" .
Если вы хотите проверить оба, вы должны сделать их отдельно:
def is_integer(num1, num2):
if isinstance(num1, int) and isinstance(num2, int):
return 'Yes'
return 'No'
Какой самый странный способ написания
def is_integer(num1, num2):
if all(isinstance(n, int) for n in (num1, num2)):
return 'Yes'
return 'No'
... с функцией all
, которая обобщает до более чем двух аргументов.
Еще лучше, пусть ваша функция принимает переменное число аргументов:
def is_integer(*args):
if all(isinstance(n, int) for n in args):
return 'Yes'
return 'No'
Еще лучше, вернуть логический результат:
def is_integer(*args):
return all(isinstance(n, int) for n in args)