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

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

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

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

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

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

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

125
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 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
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 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
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
20.02.2021, 09:45
А в чем вообще вопрос, да и тема в целом? Если ты неправильные аргументы в функцию передаешь - ак хоть на ассемблере пиши, все равно ничего не будет работать. Как и сказали выше, дело не в ЯП, а в твоей реализации кода. Ты можешь просто воткнуть везде проверки на тип данных и реализовать псевдо статичность в питоне, взять другой ЯП, возьмём например тот же СИ да там статика, но я на 100% уверен что ты создашь в 100 раз больше вопросов в тематической ветке форума на счет памяти, работы с указателями и конвертации типов данных. Так что если у тебя возникают куча вопросов не связанных с ЯП, то наверное стоит вообще отложить программирование и заняться Логикой.
1
Эксперт Python
5438 / 3859 / 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
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 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
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
25.05.2021, 17:42
Цитата Сообщение от supmener Посмотреть сообщение
Для 3.9
и для 3.8
хотя не уверен что ты хотел сказать
1
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
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,360
Записей в блоге: 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 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru