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

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

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

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

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

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

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

125
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
24.11.2019, 16:05
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
В линуксах с этим попроще
Да линукс вообще рулит!


0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
24.11.2019, 17:45  [ТС]
А существуют ли какие нибудь неочивидные нюансы в контексте обсуждаемой темы, когда программа создаётся под Windows, а запускается под Linux и наоборот?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.11.2019, 05:48
Думаю, особых ньюансов нет. Если не использовать ос-специфичные функции, то код вполне становится кроссплатформенным и переносимым.

Максимум с чем можно столкнуться - отсутствием нужных библиотек под нужную ОС/архитектуру процессора/разрядность/версию питона.
1
Эксперт Python
 Аватар для dondublon
4663 / 2082 / 367
Регистрация: 17.03.2012
Сообщений: 10,203
Записей в блоге: 6
25.11.2019, 10:56
supmener, неочевидные нюансы - на то и неочевидные, что, пока не столкнёшься - - -
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
25.11.2019, 15:47  [ТС]
Если не использовать ос-специфичные функции
А как их отличить от других?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.11.2019, 15:59
Обычно в документации помечено типа:
os.ctermid()
Availability: Unix.

os.O_TEXT
The above constants are only available on Windows.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
26.11.2019, 22:20  [ТС]
В начале темы советуют учить шаблоны проектирования. А не кажется ли кому то из Вас, что это распространенное заблуждение и на самом деле ими нельзя решить основные проблемы программирования?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.11.2019, 22:24
supmener, а что ты вкладываешь в понятие "основные проблемы программирования"?
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
26.11.2019, 22:39  [ТС]
Возможно основные проблемы программирования выходят за рамки этой темы. Хотелось бы узнать, если изучить шаблоны проектирования, то можно ли точно без ошибок (не связанных с человеческим фактором) применять Python в медицине, расчётах траекторий летательных аппаратов и других местах, где важно безошибочное выполнение алгоритмов?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.11.2019, 22:45
Паттерны не имеют отношения к алгоритмам. Ни малейшего. Это общая организация программы.
Алгоритмы - кирпичи и цемент. Паттерны - проект стройки. Отношения строителей, поставщиков, архитекторов и т.д.
Разный уровень в-общем. Так что в архитектурном плане программа может быть написана идеально, а с алгоритмами аццкий косяк. И наоборот.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
26.11.2019, 23:08  [ТС]
Так можно ли писать программы (как задавал в вопросе)? Например в системе просчёта маршрутов железной дороги? Есть ли вероятность, что пассажиры или груз уедут не в тот город?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.11.2019, 23:21
Похоже, я не смог донести до тебя свою мысль по паттернам и алгоритмам. Здание упадет, если я построю балкон с северной стороны, а не дверь с южной?
Цитата Сообщение от supmener Посмотреть сообщение
Есть ли вероятность
Даже палка раз в год стреляет...

Человеческий фактор будет присутствовать всегда. Спутники, вон, и те падают...
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
27.11.2019, 11:54  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Любой язык со строгой типизацией, если я правильно понял ваши опасения.
Добавлено через 40 секунд
c++/scala/rust/go…
А Haskell? Ещё заметил такой нюанс, в некоторых статьях указывают на наличие строгой типизации в языках, о которых думал, что в них она другая, например в одной статье увидел это про Python.
Сильная / слабая типизация (также иногда говорят строгая / нестрогая). Сильная типизация выделяется тем, что язык не позволяет смешивать в выражениях различные типы и не выполняет автоматические неявные преобразования, например нельзя вычесть из строки множество. Языки со слабой типизацией выполняют множество неявных преобразований автоматически, даже если может произойти потеря точности или преобразование неоднозначно.

Примеры:
Сильная: Java, Python, Haskell, Lisp;
Слабая: C, JavaScript, Visual Basic, PHP.
Источник habr.com/ru/post/161205/
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
27.11.2019, 12:08
Не знаю, Haskel не пользовался.

В цитате речь идёт про неявные преобразования типов и что они запрещены в питоне. Это делает язык чуточку лучше, но не решает проблему динамической типизацией, когда тип переменной можно узнать только в runtime.
Python является одним из примеров языка с сильной динамической типизацией
Думаю, большинство компилируемых языков обладают статической типизацией.

Добавлено через 2 минуты
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
27.11.2019, 12:16  [ТС]
К сожалению не являюсь специалистом. В какой программе рисовали?
0
27.11.2019, 12:39

Не по теме:

Ответь в той теме, пожалуйста, чтобы не засорять эту

0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.11.2019, 12:57
В теории программирования сильная типизация является непременным элементом обеспечения надёжности разрабатываемых программных средств. При правильном применении (подразумевающем, что в программе объявляются и используются отдельные типы данных для логически несовместимых значений) она защищает программиста от простых, но труднообнаруживаемых ошибок, связанных с совместным использованием логически несовместимых значений, возникающих иногда просто из-за элементарной опечатки.
Например, яркими примерами слабой системы типов являются те, что лежат в основе языков Си и C++.
Python является одним из примеров языка с сильной динамической типизацией[7]
Источник . Да, это статья из вики, но писали то ее неглупые люди...

+ 100500 в карму Python c сравнении с классическими компилируемыми "супернадежными" мегаязыками.
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
03.12.2019, 10:06  [ТС]
Ввёл в Google
версия python со статической типизацией
и обнаружил статьи на эту тему.
А что Вы думаете по этому поводу?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
03.12.2019, 10:47
Не нашёл ничего по похожему запросу. Хватит из питона делать нечто со статической типизацией. Возьмите другой язык или покрывайте весь код тестами и/или проверками.

Теоретически, можно написать какую-нибудь проверку, но… зачем? Есть статические анализаторы. Есть тесты.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DEBUG = True
 
def check_types(func):
    if not DEBUG:
        return func
 
    r_type = func.__annotations__['return']
 
    def wrap(*args, **kwargs):
 
        res = func(*args, **kwargs)
        assert isinstance(res, r_type), 'error return type function "%s"' % func.__name__
        return res
    return wrap
 
 
@check_types
def f(arg: int) -> list:
    return 0
 
print(f(1))
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
03.12.2019, 10:55  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Хватит из питона делать нечто со статической типизацией
Так я не виноват, что уже сделали. Сам пока не изучал:
http://ansona.pro/static_types_python/
https://habr.com/ru/post/437018/
https://www.youtube.com/watch?v=NdX0-FnypjE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.12.2019, 10:55

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
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