Программирование и научные вычисления на языке Python/§4: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 137:
==Несколько аргументов==
 
Предыдущие функции ''F(C)'' и ''F2(C)'' функции одной переменной, ''С'', то есть функции принимают только один аргумент. Но вообще функции могут принимать сколь угодно много аргументов. Например, задачу из нашего первого урока в виде функции двух аргументов можно записать так:
 
 
Строка 147:
 
 
Отметим, что ''g'' локальная переменная с фиксированным значением, в то время как ''t'' и ''v0'' аргументы функции, также являющиеся ее локальными переменными. Как можно вызвать заданную функцию нескольких аргументов:
 
 
Строка 158:
 
 
Возможность при вызове передавать аргументы в виде <tt>''аргумент=значение</tt>'' делает чтение кода более простым для понимания. При этом, если использовать данную конструкцию для всех аргументов, можно не думать об их очередности. Заметим, что если данный синтаксис выполняется не для всех аргументов, то требуется соблюдать последовательность: вначале значения "безымянных" аргументов, потом в виде <tt>''аргумент=значение</tt>''. То есть вызов ''yfunc(t=0.1, 6)'' будет некорректным.
 
Независимо от того пишем ли мы ''yfunc(0.1, 6)'' или ''yfunc(v0=6, t=0.1)'', аргументы рассматриваются как локальные переменные подобно присваиванию переменным значений:
 
 
Строка 170:
Хотя таких инструкций и не видно в тексте программы, но вызов функции автоматически инициализирует аргументы таким образом.
 
Некоторые могли бы поспорить, что ''yfunc'' должна быть функцией только от ''t'', поскольку математически мы считаем координату ''y'' функцией времени ''t'' и пишем ''y(t)''. Естественно, на это легко ответить на Python:
 
 
Строка 180:
 
 
Главное отличие в том, что теперь v0 просто обязана быть глобальной переменной, иначе мы не можем вызвать ''yfunc'':
 
 
Строка 194:
 
 
Решением служит предопределение ''v0'' как глобальной переменной перед вызовом ''yfunc'':
 
 
Строка 204:
 
 
Наши функции Python пока что недалеко уходили от обычных математических функций. Но удобство функций в программировании идет далеко дальше последних. Любой набор инструкций, который мы хотим неоднократно выполнять над однотипными объектами тут же попадает в кандидаты для функции Python. Скажем, нам нужно составлять списки чисел начинающиеся с одного заданного значения и заканчивающиеся другим заданным значением с определенным шагом. Наши функции, например, нуждаются в таких списках для значений ''С'' или ''t''. Давайте напишем функцию, выполняющую такое задание:
 
 
Строка 218:
mylist = makelist(0, 100, 0.2)
print mylist # выведет 0, 0.2, 0.4, 0.6, ... 99.8, 100</source>
 
 
==Несколько возвращаемых значений==