Встроенные функции используются как термы выражений и подразделяются на две категории: списковые операторы и унарные операторы. Это влияет на их приоритет по отношению к оператору "," - запятая. Списковые операторы могут иметь множество (список) аргументов, а унарные только один. Таким образом, запятая завершает аргументы унарного оператора и разделяет аргументы спискового. Аргумент унарного оператора воспринимается обычно в скалярном контексте, а спискового как в скалярном, так и списковом, причем скалярные аргументы идут первыми. В дальнейшем списковые аргументы мы будем обозначать словом "LIST", это значит, что функция имеет список аргументов, разделенных запятой. Аргументы функций можно заключать в круглые скобки и таким образом обозначать, что "это функция" и приоритет не имеет значения, иначе это списковый или унарный оператор с определенным фиксированным приоритетом. Пробел после имени функции и скобкой значения не имеет. Поэтому будьте внимательны!
Пример:
print 1 + 2 + 3; # результат 6 print(1+2)+3; # результат 3 print (1+2)+3; # опять 3 print (1+2+3); # 6
Если функция возвращает результат как в скалярном так и в списковом контексте, то код выхода по ошибке - скаляр c неопределенным значением или пустой список.
Запомните правило:
Не существует общего правила преобразования списка в скаляр!
Каждый оператор и функция имеют свой вид значения в скалярном контексте. Для одних это количество элементов из скалярного контекста. Для других - первый элемент списка или последний или количество успешных операций. Каждый - свое, если вы специально не указываете.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
8 8 8
| |