float.is_integer:
$ python
Python 3.10.0 (default, Oct 16 2021, 12:17:56) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
@>>> (-2.0).is_integer()
True
@>>> (3.2).is_integer()
False
Если вы хотите обрабатывать разные типы (я не хочу, считаю это плохой практикой), то можно сделать так:
float(x).is_integer()
Это выражение правильно обработает любые целые и вещественные значения. И даже строки оно обработает, что плохо. Тогда строгий вариант:
def is_integer(x):
match x:
case int():
return True
case float():
return x.is_integer()
raise TypeError()
Или так:
def is_integer(x):
if isinstance(x, (int, float)):
return float(x).is_integer()
raise TypeError()
Или так:
def is_integer(x):
if isinstance(x, float):
return x.is_integer()
if isinstance(x, int):
return True
raise TypeError()
На этом я останавливаюсь, так как в вопросе сказано
без импортирования модулей