История изменений
Исправление 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 в процессе выполнения. С точки зрения питона - нет. С точки зрения теории типов, наверное, да. Но для нас очевидно, что типизация здесь динамическая - переменная после её объявления не соответсвует типу аргумента функции, а потом внезапно начинает соответствовать. Как так? Ну потому что типизация здесь - ДИ мать её НА блин МИЧЕСКАЯ. Компренде хоть сейчас то?