Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.99/76: Рейтинг темы: голосов - 76, средняя оценка - 4.99
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

Точность выполнения кода в задачах жизни и смерти. Утиная типизация (Duck tuping)

19.11.2019, 07:48. Показов 15962. Ответов 125

Студворк — интернет-сервис помощи студентам
Это принцип в Python по аналогии, что когда что-то крякает, как утка и ходит, как утка, то это является уткой. Если буду писать программы, связанные с медицинской диагностикой с разветвлениями алгоритма в тысячи вариантов, то как избежать ошибок, чтобы программа не приняла одни данные за другие?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2019, 07:48
Ответы с готовыми решениями:

Утиная типизация
Нужно ли проверять типы данных аргументов передаваемых в метод класса или функции, как лучше делать: проверять с помощью isinstance или...

Утиная типизация
Подскажите пожалуйста, две ситуации Первая, у меня есть метод который работает int float , но если будет передаваться, что-то другое...

дело жизни и смерти
У меня скоро конец семестра,а училка задала мне задачи,а я в паскале ничего не понимаю( Помогите,а то меня не аттестуют. и...

125
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
14.02.2021, 10:28
Студворк — интернет-сервис помощи студентам
supmener, ничего ты этим не сделал, просто создал объекты через функции инт и стр. Ничто не помешает присвоить этим переменным что угодно другое.
1
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
20.02.2021, 03:42
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
def f(arg:int) -> int:
тот кто понимает язык, знает, что вы сейчас сманипулировали инструкцией.
зачем?
это отнюдь не раскрывает потенциал языка.

Добавлено через 5 минут
пардон, не понял сразу о чём речь.
для ТС поясню: :int (кусок инструкции, которая не выполняется и существует лишь для подсказки, как и: -> int)
1
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
20.02.2021, 04:52
Цитата Сообщение от supmener Посмотреть сообщение
Нормально ли получается работать с полиморфизмом на Пайтоне при динамической типизации?
А почему нет, переменная типизируется в любом случае, просто вопрос том когда это происходит.

Добавлено через 2 минуты
что бы ублажить компилятор с++, нужно перегрузить функцию для разных типов, в ДП можно перегрузку обработать в одной функции. Компилятор не поругается если ты этого не сделал, но развалится в ходе выполнения

Добавлено через 2 минуты

Не по теме:

а маркеры к типам указывают для того что бы показать, что функция другого типа не принимает (вызовет экзепшн), но опять же, никто не мешает написать лишний код для проверки входящего типа.

0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
20.02.2021, 05:01  [ТС]
Цитата Сообщение от Dethmontt Посмотреть сообщение
что бы ублажить компилятор с++, нужно перегрузить функцию для разных типов, в ДП можно перегрузку обработать в одной функции
Я ничего не понял.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
20.02.2021, 05:06
supmener, ну ты спрашивал про полиморфизм, верно?

Добавлено через 51 секунду
supmener, как он реализован в языках со статической типизацией(остановимся пока на этом варианте)?
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
20.02.2021, 06:10  [ТС]
C с++ не знаком.
Цитата Сообщение от Dethmontt Посмотреть сообщение
ты спрашивал про полиморфизм, верно?
Да
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
20.02.2021, 06:15
Цитата Сообщение от sdlkfjhsdlktyhk Посмотреть сообщение
тот кто понимает язык, знает, что вы сейчас сманипулировали инструкцией.
зачем?
это отнюдь не раскрывает потенциал языка.
Добавлено через 5 минут
пардон, не понял сразу о чём речь.
для ТС поясню: :int (кусок инструкции, которая не выполняется и существует лишь для подсказки, как и: -> int)
сам то понял чего написал? это никакие не куски и не инструкции, а аннотации типов. Они кстати не только для подсказки, если использовать соответствующие линтеры, как mypy.
1
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
20.02.2021, 06:16
Цитата Сообщение от supmener Посмотреть сообщение
Я ничего не понял.
жаль
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
20.02.2021, 09:45
А в чем вообще вопрос, да и тема в целом? Если ты неправильные аргументы в функцию передаешь - ак хоть на ассемблере пиши, все равно ничего не будет работать. Как и сказали выше, дело не в ЯП, а в твоей реализации кода. Ты можешь просто воткнуть везде проверки на тип данных и реализовать псевдо статичность в питоне, взять другой ЯП, возьмём например тот же СИ да там статика, но я на 100% уверен что ты создашь в 100 раз больше вопросов в тематической ветке форума на счет памяти, работы с указателями и конвертации типов данных. Так что если у тебя возникают куча вопросов не связанных с ЯП, то наверное стоит вообще отложить программирование и заняться Логикой.
1
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
20.02.2021, 22:42
Цитата Сообщение от supmener Посмотреть сообщение
Вот так можно.
Это тоже самое что и 7 + "8". Сложения не произойдет. Веришь?
Python проверяет совместимость типов перед тем как произвести операцию и поэтому у него строгая типизация.

А статическая типизация существует только в компилируемых в машинный код (напрямую или через JIT) языках: Ада, С++, C#, D, Java, ML, Паскаль, Solidity, Go, Fortran, Matlab... (в вики кем-то дописан еще PHP, но это неправда - в PHP 7 ввели строгую, а вовсе не статическую типизацию).
Тип связывается с переменной в момент ее объявления - compile-time.
Python - динамический язык, компиляция в байткод происходит перед непосредственно интерпретацией (выполнением) кода, и поэтому тип переменной выясняется и связывается с ней только в момент исполнения программы - runtime. И это - динамическая типизация.
Пора уже различать эти варианты: статика\динамика и строгая\слабая. Это два совершенно разных подкласса типизаций, которые при этом могут между собой комбинироваться: статическая может дополняться динамической и быть строгой или слабой.
1
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
21.02.2021, 15:06
Цитата Сообщение от Welemir1 Посмотреть сообщение
а аннотации типов
белое не может быть "немного белым".
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
21.02.2021, 15:41
ага, если только это не кусок неведомой инструкции, вот он точно белый.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
25.05.2021, 17:37  [ТС]
Для 3.9
Python
1
from typing import List, Tuple, Dict
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7393 / 4820 / 1246
Регистрация: 30.03.2015
Сообщений: 13,703
Записей в блоге: 29
25.05.2021, 17:42
Цитата Сообщение от supmener Посмотреть сообщение
Для 3.9
и для 3.8
хотя не уверен что ты хотел сказать
1
Эксперт .NET
 Аватар для Usaga
14767 / 9540 / 1365
Регистрация: 21.01.2016
Сообщений: 35,979
25.05.2021, 17:44
supmener, нашёл точность выполнения кода для задач жизни и падающих боингов?
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
25.05.2021, 17:49  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
хотя не уверен что ты хотел сказать
https://www.youtube.com/watch?v=-JW-rzbmlJE
Сейчас время в видео посмотрю

Добавлено через 1 минуту
Время 2.25 и далее.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
26.05.2021, 11:06
supmener, если без доп. ПО: https://wiki.python.org/moin/U... ffectively

Python's assert statement helps you find bugs more quickly and with less pain. This note has some suggestions on good ways to use it.
...

A few techniques can help shift the numbers in our favor, including good error logging, good testing, and internal self-checks (assertions). I wanted to write briefly about how assertions can help with Python code.
...

Places to consider putting assertions:

* checking parameter types, classes, or values
* checking data structure invariants
* checking "can't happen" situations (duplicates in a list, contradictory state variables.)
* after calling a function, to make sure that its return is reasonable
Если вас волнует только строгая типизация: mypy
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
11.07.2021, 08:07  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Но именно по этой причине я недолюбливаю аннотации типов в третьем питоне - аннотации есть, но в runtime они ничего не дают.
Я пока что узнал, что ими можно пользоваться в редакторе кода, который подсветит параметр или его значение, передаваемый в функцию, если выражение внутри неё не было предназначено для работы с буквенными данными, например. После просмотра учебных видео на тему аннотаций, возможно узнаю о них ещё что - то полезное.
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
11.07.2021, 10:40
Python
1
2
3
4
5
6
7
8
9
10
11
12
def test(a, b):
    return a+b
# python обладает средством контроля типов
 
 
def test2(a: int, b: int) -> int:
    return a+b
 
 
if __name__ == '__main__':
    print(test(a=int(input()), b=int(input())))
    print(test2(a := int(input()), b := int(input())))
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
11.07.2021, 12:24  [ТС]
Dax, пробовал комментировать части кода с аннотацией и без в вашем примере и не понял, что показывает эта программа, так как дает почти одинаковый результат в редакторе кода после запуска.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2021, 12:24

вопрос жизни и смерти!!
Помогите с заданиями, мне очень срочно нужно!!! я боюсь меня выгонят из универа((((( ПОЖАЛУЙСТА ПРОШУ ВАС ПОМОГИТЕ!!(((( я написал...

Вопрос жизни и смерти
Дали задание в универе. В Delphi разбираюсь не очень. Прошу помощи как можно скорее. Задать любым изместным пользователю способом...

Вопрос жизни и смерти..
Парни помогите кто хорошо знает С++ просто если я к понидельнику не сдам ету програму мне прийдет писец... Вот собственно задание: ...

Файлы.(Вопрос жизни и смерти)
Создать файл, где каждой компонентой будет массив из N чисел. Определить минимальное значение в каждой компоненте, записав их в другой...

СРОЧНО!!! вопрос жизни и смерти !
ПОМОГИТЕ ПОЖАЛУЙСТА РЕШИТЬ ЗАДАЧУ. Задача Считать из текстового файла информацию в массив строк.Отобразить на экран.Удалить...


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru