Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
28 / 20 / 10
Регистрация: 01.12.2018
Сообщений: 186

Аннотации в Python

11.03.2023, 20:22. Показов 838. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. По воле случая пришлось столкнуться с Python, но очень уж не могу отвыкнуть от строгой типизации. Почитав документацию, узнал, что есть так называемые аннотации, которые позволят хоть как то код сделать более удобочитаемым, знать, что принимает функция, что возвращает и т.д. Так вот возник вопрос: необходимо в функцию передавать функцию, имеющую определенные аргументы и возвращающая значение (использую в численных методах). Так вот, простые типы int, str, float и т.д. аннотировать получается, а вот функцию в качестве параметра нет. Каким образом это можно сделать, чтобы аннотировать функцию как параметр (было известно, что эта функция в себя принимает при ее использовании и что возвращает). Перечитал интернет, либо никто такого не делает, либо не реализовано. Хотелось бы ответ от специалистов получить, потому что я все, до чего добрался, перерыл уже. Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2023, 20:22
Ответы с готовыми решениями:

Аннотации функций в Python З.Х
Здравствуйте! Кто-нибудь может показать реальный пример, где аннотации функций необходимы?

Аннотации
Подскажите, пожалуйста, а как использовать свои анотации для енам? Мне надо, чтобы в енаме у меня лежали константы с названиями консольных...

Аннотации
Town.createUpdate(Town.class); import org.apache.logging.log4j.Level; public class Town extends Entity{ Town(String arg_0){ ...

12
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
11.03.2023, 20:41
fakemade, from typing import Callable
вопрос только в том -станет ли от этого код читаемее, интерпретатор игнорирует аннотации типов.
1
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
11.03.2023, 20:41
https://docs.python.org/3/libr... l#callable
1
28 / 20 / 10
Регистрация: 01.12.2018
Сообщений: 186
11.03.2023, 20:51  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
вопрос только в том -станет ли от этого код читаемее, интерпретатор игнорирует аннотации типов.
Ну я уже который год программирую на C/C++, C#(для себя, но все же) и знание того, что приходит в функцию, а что выходит стало для меня парадигмой, я уже никогда не смогу с этого перестроиться, ибо когда вижу код на Python и ему подобных языках без указания типов, становится очень тяжело читать такой код. А то, что игнорирует, я в курсе, опять же мне нужно только для удобочитаемости.
kazak, спасибо.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
11.03.2023, 21:04
Цитата Сообщение от fakemade Посмотреть сообщение
я уже никогда не смогу с этого перестроиться
ага) плавали -знаем, писал несколько лет на джаве и тоже не понимал "этих питонистов". Теперь прекрасно понимаю и к статику назад не рвусь.

Цитата Сообщение от fakemade Посмотреть сообщение
становится очень тяжело читать такой код
как и любой код на новом языке, дело привычки
0
28 / 20 / 10
Регистрация: 01.12.2018
Сообщений: 186
11.03.2023, 21:15  [ТС]
Welemir1, а что делать в случае больших проектов, где жизненно важна типизация? Все держать в голове? Комментировать? Или же питон для больших проектов не используют, а используют в случае, если надо скриптик накидать, автоматизировать что либо здесь и сейчас?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
11.03.2023, 21:27
fakemade, ничего не надо держать в голове -это и невозможно, просто привыкаешь к динамической типизации, плюс есть дзен питона и практики написания кода. Аннотации тоже применяют достаточно широко, по крайней мере для сложных функций.
Писать можно проекты любых размеров, питон не единственный язык с динамикой.

Ты посмотри с другой стороны -тут есть то, чего нет в статических языках, например гораздо удобнее тестировать код, удобнее создавать реализации поведения не используя наследование и так далее.
0
 Аватар для rim41
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
12.03.2023, 01:52
Цитата Сообщение от Welemir1 Посмотреть сообщение
опрос только в том -станет ли от этого код читаемее

Не по теме:

Я использую аннотации везде, потому что vscode красиво их выделяет


1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
12.03.2023, 09:29
rim41, и это хорошо, пичарм тоже выделяет и предупреждает ошибками, если нарушишь тип, что крайне удобно.
0
28 / 20 / 10
Регистрация: 01.12.2018
Сообщений: 186
12.03.2023, 16:53  [ТС]
Welemir1, да, работаю как раз в нем, он действительно подчеркивает, если возврат отличается от ожидаемого, так хотя бы ошибки легче отлавливать.

Не по теме:

А еще столкнулся с тем сегодня, что я не могу просто скопировать список, нужно использовать глубокое копирование, иначе новый список указывает на все тот же объект и изменение в одном приводит к изменению во всех, которые ссылаются на тот же объект:)

0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
13.03.2023, 16:23
Цитата Сообщение от fakemade Посмотреть сообщение
не могу просто скопировать список, нужно использовать глубокое копирование, иначе новый список указывает на все тот же объект и изменение в одном приводит к изменению во всех, которые ссылаются на тот же объект
Так, а доки для чего пишут?
Пользуйтесь срезами...
Python
1
2
3
4
5
6
7
8
9
10
11
a = [1,2,3,4,5]
id(a)
2456524607744
b = a[:]
id(b) #это уже не ссылка на a, а самостоятельный объект...
2456532131008
a is b
False
c = a
a is c
True
2
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
13.03.2023, 17:27
YuS_2,
и что эти
Python
1
2
3
a = [1,2,3,4,5]
print(id(a)) # 1520815438080 - ссылка на a
print(id(a[:])) # 3007157390720 - ссылка на самостоятельный объект
знания мне могут дать? в свете того что это ведь всё временное присваивание?
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
13.03.2023, 21:01
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
знания мне могут дать? в свете того что это ведь всё временное присваивание?
Не знаю, что персонально Вам они могут дать, а вот работа со ссылочными типами данных, без отчетливого понимания, как они работают, может завести в тупик...
Во всяком случае, в питоне легко проверить объект на совпадение по адресу id(), не в каждом языке существует такая возможность... И главное, не всегда ведь требуется, а иногда и противопоказано, чтобы при изменении "дочернего" объекта изменялся и "родительский" (термины условные, но надеюсь понятные).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2023, 21:01
Помогаю со студенческими работами здесь

Рефлексии и аннотации
Мне дали такое задание: Создать класс, который может выполнять «тесты», в качестве тестов выступают классы с наборами методов с...

аннотации hibernate
Всем привет! Есть аннотации такие вот 1) @Field(analyze = Analyze.NO) 2) @Facet(forField = "id", encoding =...

Аннотации и Рефлексия
Парни, подскажите что не так я делаю. У меня кидает исключение java.lang.IllegalArgumentException: wrong number of arguments ...

Аннотации JPA
Здравствуйте, всем! Ребята подскажите пожалуйста как правильно аннотировать. есть таблица скажем T1, в нем есть поля (id, name) так...

Аннотации, .class
Здравствуйте, подскажите пожалуйста что означает .class из этого кода: public class Meta2 { @MyAnno2(str = "Два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru