Введение в Python (Красота) - страница 16

Например:


>1 | def bigger(a,b):

>2 | if a > b:

>3 | print a

>4 | else:

>5 | print b

>6 | # В описании функции указано, что она принимает 2 аргумента

>7 | # Корректное использование функции

>8 | bigger(5, 6)

>9 | # Некорректное использование функции

>0 | bigger()

>1 | bigger(3)

>2 | bigger(12, 7, 3)


Аргументы - ключевые слова

Аргументы - ключевые слова используются при вызове функции. Благодаря ключевым аргументам, вы можете задавать произвольный (то есть не такой каким он описан, при создании функции) порядок аргументов.

Например:


>| def person(name, age):

>| print name, "is", age, "years old"

>|

>| # Хотя в описании функции первым аргументом идет имя, мы можем вызвать функцию вот так

>|

>| person(age = 23, name = "John")


Аргументы, заданные по-умолчанию

Аргумент по умолчанию, это аргумент, значение для которого задано изначально, при создании функции.

Например:


>| def space(planet_name, center = "Star"):

>| print planet_name, "is orbiting a", center

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

>| space("Mars")

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

>|

>| # Можно вызвать функцию 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)


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

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