tgoop.com/prog_way_blog/26
Create:
Last Update:
Last Update:
Аннотации в Python.
Типизация переменных в языках - это вечная тема для обсуждения. Кому-то нравится, статическая типизация, как в Dart, например, когда мы явно объявляем новые переменные и указываем какие типы данных они могут в себе содержать, в то время, как другим нравится динамическая типизация, как в Python, где в любой момент времени можно создать и использовать новую переменную любого типа. Сейчас не будем обсуждать что лучше, а что хуже, а поговорим о том как указать тип переменной в Python явно.
Указание типа переменной происходит по определенному синтаксису, который лучше показать, чем объяснить:
def say_hello(name: str, age: int) -> None:
print(f"Hello, {name}. I know, you're {age} years old.")
Вот такая замечательная функция у нас появилось. Мы явно указываем, что
name
- это строка, age
- целое число, а сама функция должна возвращать None
, и теперь большинство сред разработки будут указывать нам типы переменных, когда мы захотим использовать эту функцию, НО это лишь визуальное указание, никаких изменений в ход программы это не внесёт. О чём речь? Попробуем выполнить эту функцию:say_hello('Денис', 19)
>>> Hello, Денис. I know, you're 19 years old.
# всё бы хорошо, но попробуем так:
say_hello([1, 2, 3], "СТРОКА")
>>> Hello, [1, 2, 3]. I know, you're СТРОКА years old.
Как вы можете заметить, функция прекрасно отработала и не выдала никакой ошибки. Но как сделать так, чтобы при неправильных типах переменных функция не выполнялась? Обычно для этого предлагают использовать функцию
isinstance
. На примере:def say_hello(name: str, age: int) -> None:
if isinstance(name, str) and isinstance(age, int):
print(f"Hello, {name}. I know, you're {age} years old.")
else:
raise TypeError('Подан неверный тип переменной')
say_hello('Денис', 19)
>>> Hello, Денис. I know, you're 19 years old.
say_hello([1, 2, 3], "СТРОКА")
>>> TypeError: Подан неверный тип переменной
Теперь наша программа прервётся, если мы подадим в функцию неправильные входные параметры. Ну и, опять же, тема очень обширная, советую ознакомиться подробнее. Спасибо, что читаете ❤️
#python
BY progway — программирование, IT

Share with your friend now:
tgoop.com/prog_way_blog/26