python3: как включить строгую типизацию? - PullRequest
0 голосов
/ 08 июня 2018

Есть ли способ получить по-настоящему строгую типизацию в python3, чтобы можно было получить ошибку во время выполнения при использовании неправильного типа?См. Следующий пример:

def pick(k:int = None):
    if k: print("value: ", k)
    else: print("no value")

pick()
pick(1000)
pick("error")

это дает следующий вывод:

no value       <- can be accepted, and for this example it would be useful
value:  1000
value:  error  <- here should come a runtime error

1 Ответ

0 голосов
/ 08 июня 2018

Проверьте это, надеюсь, поможет.Это один из способов принудительной проверки типа.

def pick(k:int = None):
     assert isinstance(k, int), 'Value Must be of Interger Type'
     print("value: ", k) if k else print("no value")  # Single Line Statement

В случае None или string он повысится AssertionError

AssertionError: Значение должно бытьтипа Interger

Однако, если вам действительно нужно ValueError для повышения, то

 def pick(k:int = None):
     if not isinstance(k, int):
         raise ValueError('Value Must be of Interger Type')

     print("value: ", k)  if k else print("no value") # Single line statement

Исключение

ValueError: Значение должно быть из IntergerТип

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...