#python #function #if-statement #types
#python #функция #if-оператор #типы
Вопрос:
Я полный новичок в Python… В настоящее время я пытаюсь написать функцию, которая сначала проверяет, являются ли входные данные x и y int или float .
Я предполагаю, что выполняет эту работу
if (type(x) != int and type(x) != float) or (type(y) != int and type(y) != float):
Однако мне это кажется довольно неуклюжим / неэффективным, и его будет трудно обобщить в случае большого количества входных данных. Поэтому я думаю, что должен быть более элегантный способ записи этого условия ..? Спасибо за любые идеи!
Комментарии:
1. Используйте
isinstance()
.2. Большое вам спасибо за ответы, функция isinstance() — это именно то, что я искал!
Ответ №1:
Используйте isinstance
:
if not isinstance(x, (int, float)) and not isinstance(y, (int, float)):
# do something..
Ответ №2:
Используйте isinstance
if not isinstance(x, (int, float)) or not isinstance(y, (int, float)):
Ответ №3:
использование isinstance
— см. Пример кода ниже
https://www.programiz.com/python-programming/methods/built-in/isinstance
def foo(x, y):
if isinstance(x, (int, float)) and isinstance(y, (int, float)):
print('great input')
else:
print('wrong input')
Ответ №4:
вероятно, наиболее общим способом является использование базового класса из numbers
модуля:
from numbers import Number
if isinstance(3.3, Number):
...
небольшое предостережение: это также будет принимать комплексные числа (например 2 4j
). если вы хотите избежать этого:
from numbers import Real, Integral
if isinstance(3.3, (Real, Integral)):
...