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

fso
16.11.2018
09:56:03

Logerk49
16.11.2018
09:56:41
сработало

Google

Vitaly
16.11.2018
09:58:17

LighteR
16.11.2018
09:58:47

fso
16.11.2018
09:58:48

LighteR
16.11.2018
09:59:04

fso
16.11.2018
09:59:18

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

Tishka17
16.11.2018
09:59:54

fso
16.11.2018
10:00:18

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

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
а таких либ пока еще процентов 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

LighteR
16.11.2018
10:09:27
В 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

LighteR
16.11.2018
10:12:04

Tishka17
16.11.2018
10:12:07

LighteR
16.11.2018
10:12:41

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)
- нет

LighteR
16.11.2018
10:15:13

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

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

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

fso
16.11.2018
10:19:05

LighteR
16.11.2018
10:19:20

Nikolay
16.11.2018
10:19:35

LighteR
16.11.2018
10:19:44

fso
16.11.2018
10:20:35

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
Конечно полезная, только не для рантайма
да будь ты прав при своем мнении, тот факт, что в питон пропускает неправильные типы в типизированных аргументах, причем заранее никак, в частности, стат анализатором, гарантировать нужный тип не получится - очень большой фейл

LighteR
16.11.2018
10:24:00

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
да и в яваскрипте, тайпскрипте - тоже

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