@ru_python

Страница 7060 из 9768
Alex
16.11.2018
09:55:35
MySQLdb
документация утверждает, что параметры нужно передавать как %s

fso
16.11.2018
09:56:03
При том, что это статический анализатор
он не поймает случай когда в рантайме вызовется функция с передачей неправильного типа аргумента

Google
Vitaly
16.11.2018
09:58:17
LighteR
16.11.2018
09:58:47
он не поймает случай когда в рантайме вызовется функция с передачей неправильного типа аргумента
Да причему тут вообще рантайм. У тебя этот код вообще не должен до рантайма доходить

fso
16.11.2018
09:58:48
он не поймает случай когда в рантайме вызовется функция с передачей неправильного типа аргумента
тоесть именно в процессе работы, в питоне, типы получаются только для красоты, они не ограничивают передачу в аргумент никак

fso
16.11.2018
09:59:18
А в других языках как?
в других - получше)

LighteR
16.11.2018
09:59:42
Ну вот я напишу код на Java и передам в функцию вместо int'а строку, например

LighteR
16.11.2018
10:00:24
В рантайме?

fso
16.11.2018
10:00:35
В момент выполнения

LighteR
16.11.2018
10:00:42
ты шутишь что ли?

Google
fso
16.11.2018
10:00:49
нисколько

LighteR
16.11.2018
10:00:55
код не скомпилится

никакого рантайма не будет

до него просто не дойдет

fso
16.11.2018
10:01:33
в некоторых случаях скомпилить можно

Tishka17
16.11.2018
10:01:49
http://joxi.ru/EA4oQ6oUwYw312 так вызываю
10 вопросиков и 11 параметров передаешь

LighteR
16.11.2018
10:02:30
в некоторых случаях скомпилить можно
Не знаю по какие именно случаи ты говоришь. Но давай в общем

несоблюдение типов не даст скомпилить программу

И произойдет это на этапе статического анализа

fso
16.11.2018
10:03:49
Не знаю по какие именно случаи ты говоришь. Но давай в общем
суть в том, что питон прекрасно запускается, такие ошибки не ловит и в рантайме в любой аргумент, вне зависимости от прописанного типа, может попасть что угодно, что далее вызовет падение, например если ожидался словарь и делается .values()

человек выше правильно заметил, что в питоне типы - это только соглашение. без каких либо ограничений

LighteR
16.11.2018
10:04:48
Это только потому, что ты можешь запускать python без статического анализа, а c++, например, не можешь

fso
16.11.2018
10:05:01
LighteR
16.11.2018
10:05:26
но если ты будешь каждый раз запускать статический анализ для питона, то это будет тоже самое

fso
16.11.2018
10:06:02
Это только потому, что ты можешь запускать python без статического анализа, а c++, например, не можешь
статический анализ очень многое не ловит. в частности он не ловит код в сторонних либах, которые не "оттайпхинтены" как следует

а таких либ пока еще процентов 90

LighteR
16.11.2018
10:07:18
статический анализ очень многое не ловит. в частности он не ловит код в сторонних либах, которые не "оттайпхинтены" как следует
Это понятно. Но мы сейчас говорим только о самой реализации тайпхинтов в питоне. И она принципиально от других языков не отличается

fso
16.11.2018
10:07:57
да даже от пхп отличается.

Tishka17
16.11.2018
10:08:20
Не забываем про утиную типизацию

И __getattr_

Google
fso
16.11.2018
10:09:00
да даже от пхп отличается.
даже php выкинет в рантайме эксепшн легко, если до этого дойдет

LighteR
16.11.2018
10:09:27
даже php выкинет в рантайме эксепшн легко, если до этого дойдет
Ну фак, статическая типизация она не предназначена для рантайма

В C проверка того, что ты не передашь в функцию не тот тип происходит не в рантайме

а на этапе компиляции

fso
16.11.2018
10:11:05
но если таки в аргумент попадет не тот тип, что сделает С ? правильно, выкинет эксепшн. что сделает питон? промолчит в тряпочку

LighteR
16.11.2018
10:11:08
И __getattr_
Если у тебя что угодно может вернуться из __getattr___, то ты не напишешь нормального тайпхинта

Tishka17
16.11.2018
10:11:25
о том и речь

fso
16.11.2018
10:11:32
Tishka17
16.11.2018
10:12:07
LighteR
16.11.2018
10:12:41
в C не скомпилится, питон - съест если утка, кинет эксепшн если не подходит
Ну для C ты же запускаешь статический анализ. А для питона почему-то нет

Tishka17
16.11.2018
10:12:46
def x(arg: str): print(x) x(1) будет работать

а анализтор выдаст ошибку, да

LighteR
16.11.2018
10:13:22
ну так и в С ровно так же

fso
16.11.2018
10:13:53
ну так и в С ровно так же
в сях не будет работать полюбому, вот в чем разница

LighteR
16.11.2018
10:13:55
все ошибки типов на этапе статического анализа

fso
16.11.2018
10:14:31
если уж на то пошло, то питон ближе к пхп чем к сям. а в пхп с этим порядок, в отличии от питона

def x(arg: str): print(x) x(1) в питоне будет работать function x(string $arg) { print $arg; } x(1) - нет

fso
16.11.2018
10:16:27
Google
LighteR
16.11.2018
10:16:37
и проверка только в рантайме?

fso
16.11.2018
10:16:59
и проверка только в рантайме?
также есть статический анализатор, но в рантайме тоже ругается

LighteR
16.11.2018
10:17:11
тайпхинты не для этого

Tishka17
16.11.2018
10:18:08
def x(arg: str): print(x) x(1) в питоне будет работать function x(string $arg) { print $arg; } x(1) - нет
а как в ПХП сделать чтобы работало? в питоне просто убрать тип

fso
16.11.2018
10:18:09
В рантайме это нафиг не нужно
еще как нужно. еслиу честь утиную типизацию, приведение типов пользовательского ввода, сюрпризы сторонних библиотек и сервисов

Nikolay
16.11.2018
10:18:39
В рантайме тайпхинты игнорируются

fso
16.11.2018
10:19:05
В рантайме тайпхинты игнорируются
в этом то и гвоздь. для языка с динамической типизацией

Nikolay
16.11.2018
10:19:35
LighteR
16.11.2018
10:19:44
в этом то и гвоздь. для языка с динамической типизацией
Чувак, ты просто не понимаешь что такое статическая типизация и зачем она нужна

fso
16.11.2018
10:20:35
Утиная типизация нормально описавается protocol'ами
но выстрелить в ногу, получив скалярное вместо вектора из чегонибудь типа scipy.spatial - это легко

Tishka17
16.11.2018
10:20:41
Статическая типизация на самом деле вещь иногда полезная

LighteR
16.11.2018
10:21:05
Конечно полезная, только не для рантайма

Nikolay
16.11.2018
10:22:11
И для рантайма тоже

fso
16.11.2018
10:22:45
Конечно полезная, только не для рантайма
да будь ты прав при своем мнении, тот факт, что в питон пропускает неправильные типы в типизированных аргументах, причем заранее никак, в частности, стат анализатором, гарантировать нужный тип не получится - очень большой фейл

fso
16.11.2018
10:24:21
я сейчас говорю о коде как раз с таймхинтами

Google
LighteR
16.11.2018
10:24:45
Если весь код с тайпхинтами, то большинство проблем с типами будет обнаружено на этапе стат.анализа

fso
16.11.2018
10:24:55
но который вынужден использовать внешние либы (а это 100% приложений)

LighteR
16.11.2018
10:25:15
Ну вот опять ты мне про код, который не покрыт тайпхинтами

Это что, реализация тайпхинтов в этом виновата?

к самой реализации какие претензии?

fso
16.11.2018
10:25:49
потому-что это реальные ситуации, а полностью покрытый код в питоне пока миф

LighteR
16.11.2018
10:26:01
а в php все либы с тайпхинтами, да?

Pavel
16.11.2018
10:26:04
если из питона убрать утиную типизацию, то это уже не питон будет, а NIM какой-нибудь

LighteR
16.11.2018
10:26:31
https://www.python.org/dev/peps/pep-0544/

fso
16.11.2018
10:26:43
к самой реализации какие претензии?
да никаких, просто в php например ловится) это как пример близкого языка

да и в яваскрипте, тайпскрипте - тоже

Tishka17
16.11.2018
10:28:06
в яваскрипте нихрена не ловится

там все кастуется как попало куда попало

да и в пхп мне кахалось тоже

fso
16.11.2018
10:29:49
в яваскрипте нихрена не ловится
я про тайпскрипт, вот коллега напротив подсказывает

Tishka17
16.11.2018
10:30:32
тайпскрипт != яваскрипт

это другой язык

fso
16.11.2018
10:30:55

Страница 7060 из 9768