×
Traktatov.net » Введение в Python » Читать онлайн
Страница 13 из 26 Настройки

>|

>| # Можно вызвать функцию space иначе:

>| space("Mars", "Black Hole")

>| # В результате получим: Mars is orbiting a Black Hole


Аргументы произвольной длины

Иногда возникает ситуация, когда вы заранее не знаете, какое количество аргументов будет необходимо принять функции. В этом случае следует использовать аргументы произвольной длины. Они задаются произвольным именем переменной, перед которой ставится звездочка (*).

Например:


>| def unknown( * args):

>| for argument in args:

>| print argument

>|

>| unknown("hello", "world") # напечатает оба слова, каждое с новой строки

>| unknown(1, 2, 3, 4, 5) # напечатает все числа, каждое с новой строки

>| unknown() # ничего не выведет


Ключевое слово return

Выражение return прекращает выполнение функции и возвращает указанное после выражения значение. Выражение return без аргументов это то же самое, что и выражение return None. Соответственно, теперь становится возможным, например, присваивать результат выполнения функции какой либо переменной.

Например:


>| def bigger(a,b):

>| if a > b:

>| return a # Если a больше чем b, то возвращаем b и прекращаем выполнение функции

>| return b # Незачем использовать else. Если мы дошли до этой строки, то b, точно не меньше чем a

>|

>| # присваиваем результат функции bigger переменной num

>| num = bigger(23, 42)


Область видимости

Некоторые переменные скрипта могут быть недоступны некоторым областям программы. Все зависит от того, где вы объявили эти переменные.

В Python две базовых области видимости переменных:

* Глобальные переменные

* Локальные переменные

Переменные объявленные внутри тела функции имеют локальную область видимости, те что объявлены вне какой-либо функции имеют глобальную область видимости.

Это означает, что доступ к локальным переменным имеют только те функции, в которых они были объявлены, в то время как доступ к глобальным переменным можно получить по всей программе в любой функции.

Например:


>| # глобальная переменная age

>| age = 44

>| def info():

>| print age # Печатаем глобальную переменную age

>|

>| def local_info():

>| age = 22 # создаем локальную переменную age

>| print age

>|

>| info() # напечатает 44

>| local_info() # напечатает 22


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

Например:


>| # глобальная переменная age

>| age = 13

>|

>| # функция изменяющая глобальную переменную

>| def get_older():

>| global age

>| age += 1

>| print age # напечатает 13

>| get_older() # увеличиваем age на 1

>| print age # напечатает 14


Рекурсия

Рекурсией в программировании называется ситуация, в которой функция вызывает саму себя. Классическим примером рекурсии может послужить функция вычисления факториала числа.

Напомним, что факториалом числа, например, 5 является произведение всех натуральных (целых) чисел от 1 до 5. То есть, 1 * 2 * 3 * 4 * 5

Рекурсивная функция вычисления факториала на языке Python будет выглядеть так