LINUX.ORG.RU

История изменений

Исправление FishHook, (текущая версия) :

то это будет примером динамической типизации?

вот смотри, есть такой питоний код

class Foo:
   pass


def say(obj):
   obj.say()


foo = Foo()
if today == "Friday":
   say(foo)

он абсолютно корректен, он скомпилируется и будет работат, но будет падать с ошибками по пятницам

есть вот такой код

class Foo:
   pass


def say(obj):
   obj.say()

foo = Foo()
foo.say = lambda s: print("Go love yourself")
say(foo)

он тоже абсолютно корректен и работает даже по пятницам. При этом, заметь, с типом Foo никаких изменений не случилось и с функцией тоже. Вопрос философский, изменился ли тип переменной foo в процессе выполнения. С точки зрения питона - нет. С точки зрения теории типов, наверное, да. Но для нас очевидно, что типизация здесь динамическая - переменная после её объявления не соответсвует типу аргумента функции, а потом внезапно начинает соответствовать. Как так? Ну потому что типизация здесь - ДИ мать её НА блин МИЧЕСКАЯ. Компренде хоть сейчас то?

Исправление FishHook, :

то это будет примером динамической типизации?

вот смотри, есть такой питоний код

class Foo:
   pass


def say(obj):
   obj.say()


foo = Foo()
if today == "Friday":
   say(foo)

он абсолютно корректен, он скомпилируется и будет работат, но будет падать с ошибками по пятницам

есть вот такой код

class Foo:
   pass


def say(obj):
   obj.say()

foo = Foo()
foo.say = lambda: print("Go love yourself")
say(foo)

он тоже абсолютно корректен и работает даже по пятницам. При этом, заметь, с типом Foo никаких изменений не случилось и с функцией тоже. Вопрос философский, изменился ли тип переменной foo в процессе выполнения. С точки зрения питона - нет. С точки зрения теории типов, наверное, да. Но для нас очевидно, что типизация здесь динамическая - переменная после её объявления не соответсвует типу аргумента функции, а потом внезапно начинает соответствовать. Как так? Ну потому что типизация здесь - ДИ мать её НА блин МИЧЕСКАЯ. Компренде хоть сейчас то?

Исходная версия FishHook, :

то это будет примером динамической типизации?

вот смотри, есть такой питоний код

class Foo:
   pass


def say(obj):
   obj.say()


foo = Foo()
if today == "Friday":
   say(foo)

он абсолютно корректен, он скомпилируется и будет работат, но будет падать с ошибками по пятницам

есть вот такой код

class Foo:
   pass


def say(obj):
   obj.say()

foo = Foo()
foo.say = lambda: print("Go love yourself")

он тоже абсолютно корректен и работает даже по пятницам. При этом, заметь, с типом Foo никаких изменений не случилось и с функцией тоже. Вопрос философский, изменился ли тип переменной foo в процессе выполнения. С точки зрения питона - нет. С точки зрения теории типов, наверное, да. Но для нас очевидно, что типизация здесь динамическая - переменная после её объявления не соответсвует типу аргумента функции, а потом внезапно начинает соответствовать. Как так? Ну потому что типизация здесь - ДИ мать её НА блин МИЧЕСКАЯ. Компренде хоть сейчас то?