C и все языки, на которых копируются файлы, не используют ключевые слова для объявления функции - всего лишь <returned type> <function name>(<arguments)
. void
- это просто способ сказать «нет типа вообще», то есть то, что мы использовали для вызова «подпрограммы» или «процедуры» («функции», которая не возвращает никакого значения).
function
, как используется в Javascript, является четким и сразу очевидным ключевым словом, одинаково применимым как для именных, так и для безымянных функций. ИМХО, лучший из группы.
Я не знаю, что думал Гуидо, когда он выбрал def
для названных функций и lambda
для неназванных (Нидерланды, где он родился и вырос и где он жил в то время, имеет много прекрасных сортов пива, курс;-). Ruby только что принял def
от Python, может быть, просто потому, что он короткий (но он не имеет смысла или толкования ...!).
'def' не имеет смысла? Разве это не краткое определение «определить»? –
Но, «определить» _what_? Почему «определение» означает специально названные функции, а не неназванные, или классы, или dicts, или ...?! И почему «определять», а не «дефолт», «дефер», «дефект», «defenestrate», «disunct» ...? Я люблю Python, а Guido - друг, но 'def' - это просто худшее ключевое слово на этом языке!) –
Как указано,' void' - это тип возвращаемого значения, а не ключевое слово для обозначения функции как 'def'. 'def' кажется мне заимствованным из функциональных языков, где даже функции являются типами первого класса. – dirkgently