LINUX.ORG.RU

Ответ на: комментарий от nokachi

Ты ебаняшка что ле? Это объекты класса function, у которых есть метод __call__. С какого хуя у двух функций, по разному достающих аргументы из словарика(фактически так и происходит передача аргументов), должен быть разный тип?

anonymous
()
Ответ на: комментарий от tailgunner

Ну если результат вывода никуда не идет, то можно их и не выводить. Т.е. должны быть места, где типы все же фиксируются.

Анализ AST однако... грамотно нписанная ф-я обхода все решит;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

должны быть места, где типы все же фиксируются.

Должны, да. Границы модуля, например.

Анализ AST однако... грамотно нписанная ф-я обхода все решит;-)

Если задача решаема :) И придется обходить AST всей программы или «единицы типизации» (модуль, пакет).

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anonymous

я Конь (гордо так). С какого хуя не знаю, но почему бы нет? Type system не обязана знать о словарике.

nokachi
()
Ответ на: комментарий от tailgunner

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

aedeph_ ★★
()
Ответ на: комментарий от tailgunner

Кстати, а в третьем питоне по прежнему god mode'ом является модуль __builtin, с помощью которого можно сделать _фактически_ всё одним эвалом?

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

О Python 3.x я только читал :)

модуль __builtin, с помощью которого можно сделать _фактически_ всё одним эвалом?

Parse error.

tailgunner ★★★★★
()

Прототипы нужны для двух вещей:

1) чтобы две функции могли вызывать друг друга – в питоне это можно и без них

2) чтобы выносить функции во внешний интерфейс модуля – в питоне тупо в интерфейс автоматически выносятся все функции, что для такого языка вполне логично

Так что они в питоне просто не нужны.

anonymous
()
Ответ на: комментарий от aedeph_

Без использования statement'ов делать абсолютно всё.

...в том числе придать новое значение термину «через жопу». Наверное, так можно и в Python 3.x

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Это же несколько хуже, чем через жопу.

Проблема ведь не толкьо в кривизне, но и в том, что её можно эффективно использовать.

aedeph_ ★★
()
Ответ на: комментарий от AIv

Мне всегда казалось, что ООП (инкапсуляция, наследование, пролиморфизЪм - так кажется?) не особо связано с императивщиной/ФП.

Если в классах данные хранить в глобальных переменных, то без инкапсуляции это будет не ООП?

Napilnik ★★★★★
()

А где в Python прототипы функций?

Их там не должно быть по дизайну языка.

Дизайн языка таков, что проверок типов транслятором до времени выполнения нет.

Это плохо, потому что не позволяет найти очевидные ошибки и, часто, опечатки.

Это хорошо, потому что упрощает и ускоряет работу программиста.

ien
()
Ответ на: комментарий от ien

упрощает и ускоряет работу программиста
потому что не позволяет найти очевидные ошибки и, часто, опечатки

a novel approach in software engineering!

nokachi
()
Ответ на: комментарий от nokachi

a novel approach in software engineering!

а что в этом нового? обычный компромисс.

а почему бы не доверить работу по проверке кода специальному средству типа http://pychecker.sourceforge.net/ ?

ну, типа, каждое средство свою работу делает: транслятор — транслирует, а проверяльщик — проверяет.

ien
()
Ответ на: комментарий от Napilnik

Если в классах данные хранить в глобальных переменных, то без инкапсуляции это будет не ООП?

Кривоватое ООП, скорее какая то опа;-)

AIv ★★★★★
()
Ответ на: комментарий от tailgunner

И придется обходить AST всей программы или «единицы типизации» (модуль, пакет).

Ну в общем виде не решаемая, поскольку один такой кусок

a = 1 if b>1 else 1.5
уже потребует рантайма.

Но что то сделать можно... в общем для статементов это довольно просто. Будет в каких то местах верещать - я незнаю что там за тип! Но в целом работать будет.

AIv ★★★★★
()
Ответ на: комментарий от AIv

такой кусок

a = 1 if b>1 else 1.5

уже потребует рантайма.

Такой кусок будет отвергнут чекером.

tailgunner ★★★★★
()
Ответ на: комментарий от AIv

Кривоватое ООП, скорее какая то опа;-)

Ну а что ещё, кроме процедурщины и дублирования всех данных, можно придумать для управления промежуточными результатами вычислений.

Napilnik ★★★★★
()
Ответ на: комментарий от provaton

На пыхе вообще прототипы не нужны, работает и так.

Ну в питоне точно также все, чего ты зря воздух сотрясаешь?

А это что тогда значит?

1. Вызов до определения функции:

anyFunc()

def anyFunc():
 print 'Hello, redeyes!'
Traceback (most recent call last):
  File "python.py", line 3, in ?
    anyFunc()
NameError: name 'anyFunc' is not defined

2. Вызов после определения функции:

def anyFunc():
 print 'Hello, redeyes!'

anyFunc()
Hello, redeyes!

Пожалуйста, ответь, почему в варианте 1 функция не вызвана, хотя присутсвует в коде? Как вызвать функцию, которая описана ниже по коду?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Как вызвать функцию, которая описана ниже по коду?

обычно делают так:

def main():
  anyFunc()

def anyFunc():
 print 'Hello, redeyes!'

if __name__ == '__main__':
  main()
provaton ★★★★★
()
Последнее исправление: provaton (всего исправлений: 1)
Ответ на: комментарий от provaton

То есть, конструкцию

if __name__ == '__main__':
  main()

В питоне надо помещать в конец файла скритпа, чтобы когда до нее дойдет дело, все функции были уже определены. Я правильно понимаю?

Как-то это очень извратно и совершенно не так естественно как в PHP, где ненужно смотреть где и в какой момент определена функция.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

В питоне надо помещать в конец файла скритпа, чтобы когда до нее дойдет дело, все функции были уже определены. Я правильно понимаю?

Правильно.

Как-то это очень извратно и совершенно

Моему эстетическому чувству эта фигня тоже не сильно радостна, но на практике проблем не возникает.

provaton ★★★★★
()
Ответ на: комментарий от tailgunner

В скриптах так обычно не делают.

Я пишу, так проще в ипитоне отлаживать. Но особого значения это не имеет.

provaton ★★★★★
()
Ответ на: комментарий от nokachi

превосходства питона и джаваскрипт

Ааахахаха хахаха ууу ё ну ты дал.

Dron ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.