Как я могу проверить типы переменных в Python?

Ага, как сказал Эван, не typing проверять типа. Просто попробуйте python-shell использовать значение:

def myintfunction(value):
   """ Please pass an integer """
   return 2 + value

Здесь python-interpreter нет проверки типов. Это намного python-interpreter лучше! Посмотрим, что будет, когда pythonista я попробую:

>>> myintfunction(5)
7

Это работает, потому typing что это целое число. Хм. Давайте pythonic попробуем текст.

>>> myintfunction('text')
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 3, in myintfunction
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Он показывает pythonic ошибку TypeError, что он pythonista должен делать в любом случае. Если pythonic вызывающий хочет это поймать, это python-interpreter возможно.

Что бы вы сделали, если py бы проверили тип? Показывать pythonic ошибку верно? Таким образом, вам python-interpreter не нужно выполнять проверку typing типов, потому что ошибка python-shell уже появляется автоматически.

Кроме typing того, поскольку вы не выполняли python-shell проверку типов, ваша функция pythonista работает с другими типами:

Плавающие:

>>> print myintfunction(2.2)
4.2

Комплексные pythonista числа:

>>> print myintfunction(5j)
(2+5j)

Десятичные знаки:

>>> import decimal
>>> myintfunction(decimal.Decimal('15'))
Decimal("17")

Даже pythonic совершенно произвольные объекты, умеющие py складывать числа!

>>> class MyAdderClass(object):
...     def __radd__(self, value):
...             print 'got some value: ', value
...             return 25
... 
>>> m = MyAdderClass()
>>> print myintfunction(m)
got some value:  2
25

Таким образом, проверка dynamic-typing типов ничего не дает. И много pythonic потеряешь.


ОБНОВЛЕНИЕ:

Поскольку вы отредактировали py вопрос, теперь ясно, что py ваше приложение вызывает python-shell некоторую подпрограмму восходящего py потока, которая имеет смысл pythonista только с целыми числами.

В pythonic таком случае, я все же считаю, что python-shell вам следует передать параметр python как получено вышестоящей функции. Функция typing восходящего потока справится pythonic с этим правильно, например. выдает typing ошибку, если это необходимо. Я python-interpreter очень сомневаюсь, ваша функция, которая pythonic имеет дело с IP-адресами, будет python вести себя странно, если typing вы передадите ей число с typing плавающей запятой. Если вы pythonic сообщите нам название библиотеки, мы typing можем это проверить.

Но ... Если pythonista восходящая функция будет typing вести себя неправильно и pythonista убьет некоторых детей, если dynamic-typing вы передадите ей число с pythonista плавающей запятой (я все pythonic еще очень сомневаюсь в этом), тогда python-interpreter просто вызовите для нее int():

def myintfunction(value):
   """ Please pass an integer """
   return upstreamfunction(int(value))

Вы pythonic по-прежнему не проверяете dynamic-typing типы, поэтому вы получаете python-shell максимальную пользу от отказа python-shell от проверки типов.


Если даже dynamic-typing после всего этого вы действительно typing хотите ввести проверку, несмотря py на то, что это снижает удобочитаемость python-interpreter и производительность вашего python-interpreter приложения без каких-либо pythonic преимуществ, используйте pythonic для этого assert.

assert isinstance(...)
assert type() is xxxx

Таким образом python-shell мы можем отключить assert и удалить py эту функцию из программы, вызвав typing ее как

python -OO program.py

python

typing

dynamic-typing

2022-11-07T14:19:32+00:00
Вопросы с похожей тематикой, как у вопроса:

Как я могу проверить типы переменных в Python?