Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Python. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Заголовок этой программы – ключевое слово for, за которым следует
двоеточие. Телом является оператор print("Привет, мир!") с отступом.
Пример из предыдущего раздела, содержащего несколько инструкций if
и elif, содержит три составных инструкции. Первая содержит три ветви, вто­рая – одну, а последняя – две.
Чтобы сделать код более читабельным, иногда добавляют пустое про-
странство. Заметим, что пробелы между инструкциями не влияют на правиль­ность работы программы.
print("Валерий")
print("Харламов")
>> Валерий >> Харламов

3. Функции

В общем виде функция представляет собой некоторый независимый фраг­мент кода, выполняющий при своем вызове команды тела функции. Вызывает­ся функция по имени. По своей сути она представляет собой небольшую про­грамму, которая не выполняется автономно, а встраивается в основную про­грамму. Часто функции называются подпрограммами. Благодаря функциям не нужно каждый раз писать дублирующие инструкции для выполнения типовых операций. Собственно, это главное предназначение функций – многократное выполнение определенного фрагмента программы. Функции способны полу­чать и возвращать данные из вызывающей программы. При вызове функции ей передаются параметры (передача параметров (аргументов) функции).

Определение функций

При определении функции в Python необходимо:
1) выбрать имя функции;
2) определить параметры функции;
3) указать, что функция должна делать и какое значение возвращать.
21
Для определения функции используется следующий синтаксис:
# Синтаксис записи функции.
def имя_функции([параметры]): определение_функции
Примечание. Использование квадратных скобок означает, что параметры
могут отсутствовать.
Пример. Определение функции f = x2.
def f(x): return x ** 2
Функция определяется с помощью ключевого слова def, после которого
указывается имя функции. В имени функции нельзя использовать заглавные буквы, а слова разделяются с помощью символа подчеркивания, вот_так. По- сле имени функции в круглых скобках перечисляются один или несколько па­раметров и после скобок ставится двоеточие, а новая строка начинается с от­ступа в четыре пробела (как с любой другой составной инструкции). Любой код с отступом в четыре пробела после двоеточия является определением функции.
В нашем примере это return x ** 2. Ключевое слово return возвращает значение функции.
Пример. Вызов функции f = x
2
.
def f(x): return x ** 2 y = f(2) if y == 4: print("y равно 4") else: print("y не равно 4")
>> y равно 4
Функция может иметь один или несколько параметров или вообще их не
иметь. Если функция не использует внешние параметры, то в скобках ничего не ставят.
22
Пример. Вызов функции без параметров.
def f(): return 5 + 5
result = f() print(result)
>> 10
Пример. Вызов функции с несколькими параметрами.
def f(a, b, c, x): return a * x * x + b * x + c result = f(1, 2, 3, 4) print(result)
>> 28
Особо отметим, что функция может и не содержать инструкцию return. Если ей нечего возвращать, то она возвращает значение None.
def f(): y = 3 + 2 result = f() print(result)
>> None

Встроенные функции

Аналогично другим языкам программирования Python также содержит библиотеку встроенных функций, которые выполняют стандартные расчеты. Примером встроенной функции является уже многократно использованная функция print.
Примером другой встроенной функции является функция len, возвраща- ющая длину объекта, например строки (т.е. количество символов в ней):
len("Python")
>> 6
23
Еще одна встроенная функция str преобразует объект в строковый тип.
С помощью этой функции можно, например, преобразовать целое число в строку:
str(10)
>> '10'
Встроенная функция int преобразует объект в число целого типа:
int("5")
>> 5
Встроенная функция float преобразует объект в вещественное число:
float(25)
>> 25.0
Примечание. При использовании функций str, int, float
важно ис-
пользовать правильные параметры, которые могут быть преобразованы в стро­ку, целое или вещественное число. В противном случае Python сгенерирует ис­ключение. Например:
int("Python")
>> ValueError: invalid literal for int() with base 10: 'Python'
Встроенная функция input собирает информацию от пользователя:
age = input("Укажите возраст:") int_age = int(age) if int_age < 21: print("Вы - молоды!") else: print("Ну вы и старик!")
>> Укажите возраст:
Функция input выводит на экран строку «Укажите возраст:», после
чего пользователь вводит ответ в виде числа, которое сохраняется в перемен­ной age, и в дальнейшем с помощью функции int преобразуется из строки в целое число. В дальнейшем с помощью конструкции if-else анализирует­ся, какое сообщение требуется вывести.
24

Многократное использование функций

Особенностью функций является возможность использовать их много­кратно, а не только для вычислений и возвращения значений.
def even_odd(x): if x % 2 == 0: print("четное") else: print("нечетное") even_odd(2) even_odd(3)
>> четное >> нечетное
В данном примере не было определено значение, которое должна была возвращать функция, но она прекрасно работает, проверяя четность и нечет­ность входных параметров.
def even_odd(): n = input("введите число: ") n = int(n) if n % 2 == 0: print("n - четное.") else: print("n – нечетное.") even_odd() even_odd() even_odd()
>> введите число:
В данной программе поместили функциональность внутрь функции и вы­звали ее трижды.

Типы параметров функции

В Python существуют два типа параметров функции: обязательные и не­обязательные (опциональные, или параметры, со значением по умолчанию).
25
Обязательные параметры нужно передать функции обязательно. При этом нельзя указать иное количество параметров, чем указанное при определении функции. Рассмотренные нами до сих пор функции имели только обязательные параметры.
Необязательные параметры – это такие параметры, которые указаны со значением по умолчанию и могут не передаваться при вызове функции.
Пример. Определение функции с необязательным параметром.
def f(x=2): return x**x print(f()) print(f(4))
>> 4 >> 256
Первый вызов функции осуществляется без передачи параметра. Ввиду то­го, что параметр необязательный, x получает значение 2, а функция получает значение 4.
При втором вызове функции передается параметр 4. В этом случае функ­ция игнорирует значение, заданное по умолчанию, x присваивается значение 4, а функция уже получает значение 256.
Функция может иметь как обязательные, так и необязательные параметры, но обязательные нужно определять в первую очередь.
def add_it(x, y=10): return x + y result = add_it(2) print(result)
>> 12

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

Переменные в Python обладают так называемой областью видимости. Она показывает, какая часть программы может находить и изменять значение пере­менной, и зависит от того, где в программе была определена переменная. Если переменная определена в пределах функции (класса), то она обладает локаль-
ной областью видимости, а если за пределами функции, то –
26
глобальной.
x = 1
и, т.е. их можно находить и изменять из
Корректный код
Ошибочный код
def f():
>> 3
def f():
y = 2 z = 3
Так как переменные x, y, z определены вне функции (класса), то они обла-
дают глобальной областью видимост любой части программы.
Пример. Переменные с глобальной областью видимости.
x = 1 y = 2 z = 3 def f(): print(x) print(y) print(z) f()
>> 1 >> 2 >> 3
обладать локальной областью видимости, т.е. их можно будет находить и изме­нять только в пределах функции. В противном случае Python выдаст исключение.
x = 1 y = 2 z = 3 print(x) print(y) print(z) f()
>> 1 >> 2
Если переменные x, y, z определить внутри функции (класса), то они будут
x = 1 y = 2 z = 3 print(x) print(y) print(z)
>> NameError: name 'x' is not defined
27
Если попытаться использовать переменную, определенную в функции за ее пределами, то система воспримет это как использование еще не определен­ной переменной, что также приведет к выдаче исключения.
if x > 100: print("x > 100")
>> NameError: name 'x' is not defined
Важно! Изменять глобальную переменную можно из любой части кода, но если возникла необходимость изменить ее внутри локальной области видимо­сти, требуется перед ней использовать ключевое слово global.
Пример. Изменение глобальной переменной внутри функции.
x = 100 def f():
global x x += 1 print(x) f()
>> 101

Обработка исключений

Необходимость в целесообразности обработки исключений покажем на простом примере. Допустим, надо ввести последовательно два числа и поде­лить первое введенное число на второе. Очевидно, что если случайно в каче­стве второго числа ввести ноль, то программа выдаст исключение. Приведен­ным примером дело не ограничивается, и чтобы выйти из подобных затрудне­ний, предотвратив возможные ошибки в программе, надо «перехватить» ис­ключения с помощью ключевых слов try и except. Целесообразность такого подхода в обработке исключений заключается в том, что программа не преры­вается и не завершается аварийно, а может продолжать нормальную работу.
Пример. Корректное использование обработки исключений при вводе ну­ля в качестве делителя.
a = input("Введите число:") b = input("Введите еще одно число:")
28
a = int(a) b = int(b) try: print(a / b) except ZeroDivisionError: print("b не может быть нулем.")
>> Введите число: >> 10 >> Введите еще одно число: >> 0 >> b не может быть нулем.
При вводе в качестве b числа, отличного от нуля, исполняется ветвь try,
а ветвь except игнорируется. Если же ввести ноль, то вместо вывода исклю­чения сработает ветвь except, и программа выведет текст b не может
быть нулем.
Прерывание возможно, если ошибочно ввести строку, которую нельзя пре-
образовать в целое число. Например:
a = input("Введите число:") b = input("Введите еще одно число:") a = int(a) b = int(b) try: print(a / b) except ZeroDivisionError: print("b не может быть нулем.")
>> Введите число: >> два >> Введите еще одно число:
>> сто >> ValueError: invalid literal for int() with base 10: 'два'
Возникшую ситуацию можно исправить, поместив операторы ввода внутрь
инструкции try и указав except искать два исключения.
29
try: a = input("Введите число:") b = input("Введите еще одно число:") a = int(a) b = int(b) print(a / b) except(ZeroDivisionError, ValueError): print("Ошибка ввода.")
>> Введите число: >> два >> Введите еще одно число: >> сто >> Ошибка ввода.
Заметим, что не рекомендуется использовать в except переменные, опре­деленные в try, так как исключение может возникнуть до того, как будет определена переменная, и при срабатывании except выдаст исключение.
try: 100 / 0 c = "Я никогда не определюсь." except ZeroDivisionError: print(c)
>> NameError: name 'c' is not defined

Строки документации

При определении функции с параметрами считается хорошим тоном ввер­ху писать комментарий, называемый строкой документации, поясняющий пользователям тип данных, вызываемый данной функцией.
def add(x, y): """ Возвращает x + y. :параметы x, y: целые числа.
:return: целочисленная сумма x и y. """ return x + y
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]