Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 19, 2013 19:44:27

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

doza_and
и тип не может быть изменён позже
Звучит как недостаток (а в питоне, может). Особенно если опустить “проблемы” проверки тип на стадии компиляции и скорости исполнения.

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

Что если с этой стороны посмотреть?

Офлайн

#2 Авг. 19, 2013 20:52:43

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Статическая типизация в питоне

А зачем может понадобится менять тип объекта, не очень понимаю.

Офлайн

#3 Авг. 19, 2013 21:35:07

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

doza_and
дженерики которые недавно появились в плюсах и черт знает когда в джаве и сишарпе
Ради исторической справедливости, template появились в c++ очень давно, где-то в девяностых. У меня есть диск с компиляторами 1998 года они там уже вовсю используются.
В шарпе и яве дженерики тоже были не от самого рождения.
http://ru.wikipedia.org/wiki/Java#Java_1.2 как я понимаю они начались с версии 5.0 в 2004 году. Могу ошибаться не спец я по яве.
Шарп списывался с обоих и generics полноценно появились в 2005 году в версии 2.0.

FishHook
Где хочешь там и вставляй.
Ну конечно, для строк умножение в c++ не определено. Доопределите и будет работать. Абсолютно аналогично будет и питон работать:
def dva(obj):
    return obj*2
>>> dva({2:3,1:3})    
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in dva
TypeError: unsupported operand type(s) for *: 'dict' and 'int'
Прописывать или не прописывать проверку типов и в каком объеме и какую часть оставить на unit тестирование это уже просто архитектурное решение.
Когда я еще не писал на питоне, я писал на c++. В некторых проектах код был настолько обобщенным, что практически весь состоял из шаблонов. Автодополнение тоже работало через пень колоду, а сообщения об ошибках компиляции размером в несколько страниц могли интерпретировать только особо умудренные опытом особы.

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

p.s.
:) конечно python и c++ не одно и тоже



Отредактировано doza_and (Авг. 19, 2013 21:35:50)

Офлайн

#4 Авг. 19, 2013 21:52:27

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

o7412369815963
Что если с этой стороны посмотреть?
есть только в проекте http://www.mypy-lang.org/

Офлайн

#5 Авг. 19, 2013 22:49:41

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

lorien
А зачем может понадобится менять тип объекта, не очень понимаю.
Фраза очень хорошо показывает недопонимание сути.
Я не упрекаю, мы все так пытаемся делать.
Это попытка объясниться с помощью другого понятийного аппарата при отсутствии прямого аналога.

В нетипизированных языках отсутствует понятие типа, поэтому нельзя изменить тип.

Однако, можно явно указать правила выполнения различных методов и операций над объектами.
Например, в web к нам приходят строковые данные в виде чисел, к которым мы хотим применить операции сложения, а не конкатенации строк.
В расширенном смысле можно сказать, что мы типа Строка у переменной меняем на тип Число.

“Изменение типа” в web - это самый очевидный пример, свойственный всем языкам.

У Питона есть некоторые вкусности, позволяющие легко и просто “изменить тип”, выполнив при этом какую-то полезную работу. Например, преобразование list в set заодно оставит в результате “преобразования” только уникальные элементы.



Офлайн

#6 Авг. 20, 2013 08:39:51

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Статическая типизация в питоне

Я спрашивал не o type casting, который сплошь и рядом, а о смене типа у объекта. Зачем нужен type casting вопроса у меня не возникает.

> foo = “4”
> bar = int(foo)

Это не смена типа объекта, это создание нового объекта

> foo = “4”
> foo = int(foo)

Это тоже создание нового объекта.

Что такое один и тот же объект в моём понимании? Это когда id(foo) == id(bar)

Я просто неправильно прочитал слова , почему-то про изменение типа одного и того же объекта подумал.

> В нетипизированных языках отсутствует понятие типа, поэтому нельзя изменить тип.

Это что за языки такие? Даже в php и javascript есть типы.

Офлайн

#7 Авг. 20, 2013 10:21:49

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

lorien
> В нетипизированных языках отсутствует понятие типа, поэтому нельзя изменить тип.
Это что за языки такие? Даже в php и javascript есть типы.
Написал так в смысле организации и способа хранения переменных в памяти.
Именно так, как вы написали:
foo = int(foo)
создает новый объект, а не изменяет тип.

В Питоне, если не ошибаюсь, даже повторное присвоение переменной одного и того же значения создает новый объект в памяти.

ЗЫ
Кстати, я упустил тип Variant в типизированных языках, где можно менять тип переменной явно
Там есть поле, указывающее текущий тип.



Офлайн

#8 Авг. 20, 2013 11:37:49

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

разница в том что в статически типизированных тип привязывается к имени переменной, а в динамически типизированных нет. Тип у объектов есть и там, и там.

Отредактировано bismigalis (Авг. 20, 2013 11:38:04)

Офлайн

#9 Сен. 1, 2013 10:57:27

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

Офлайн

#10 Сен. 1, 2013 11:33:02

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Статическая типизация в питоне

a = 100
a+= 999999999999999999

int a = 0;
a = a+ 99999999999999999999;
С питоном не нужно думать о таких мелочах



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version