Использование функций. Функции без аргументов (параметров)

Содержание

Слайд 2

Вид функции def без параметров: def (): где дается по тем

Вид функции def без параметров:
def <имя функции> ():
<тело функции>
где
<имя

функции> дается по тем же правилам, что и имя переменной,
<тело функции> - инструкции, реализующие решаемую задачу с помощью этой функции.
Слайд 3

Если функция описана, то вызов функции осуществляется инструкцией: ()

Если функция описана, то вызов функции
осуществляется инструкцией:
<имя функции> ()

Слайд 4

Пример 1. Функция без параметров # Программа func01 # Начало описания

Пример 1. Функция без параметров
# Программа func01
# Начало описания функции
def lin():

for k in range(40):
print('*',end='')
print()
# Начало основной части программы
lin()
lin()
Будет напечатано:
****************************************
****************************************
Слайд 5

Замечание. Функцию lin() можно было написать и короче: def lin(): print('*' *40)

Замечание. Функцию lin() можно было написать и короче:
def lin():
print('*' *40)

Слайд 6

13.2. Вид функции def c параметрами: def (s): где s –

13.2. Вид функции def c параметрами:
def <имя функции> (s):
<тело функции>


где
s – список формальных параметров, перечень величин, от которых зависит результат выполнения функции. Формальные параметры используются в теле функции.
Слайд 7

Вызов такой функции имеет вид: (p) где p – список фактических

Вызов такой функции
имеет вид:
<имя функции> (p)
где
p – список фактических параметров,

перечень конкретных значений параметров
для решения конкретной задачи, записанных через запятую.
Слайд 8

В качестве значений фактических параметров могут быть: Константы; Имена переменных;

В качестве значений фактических параметров могут быть:
Константы;
Имена переменных;

Слайд 9

При вызове функции следует выполнять требования: Количество фактических и формальных параметров

При вызове функции следует выполнять
требования:
Количество фактических и формальных параметров должно совпадать;
Тип

фактического параметра должен совпадать с типом соответствующего формального параметра;
Соответствующие фактические и формальные параметры должны совпадать по смыслу.
Слайд 10

Замечание. Переменные величины, получающие значения в теле функции называются «локальными», а

Замечание.
Переменные величины, получающие значения в теле функции называются «локальными», а встречающиеся

в основной программе – «глобальными».
Локальные переменные «живут» только вовремя выполнения функции и недоступны для основной программы и других функций.
Слайд 11

Пример 2. Функция с параметром # Программа func02 # Начало описания

Пример 2. Функция с параметром
# Программа func02
# Начало описания функции
def linp(m):

print('*'*m)
# Начало основной части программы
linp(20)
linp(30)
Будет напечатано:
********************
******************************
Слайд 12

Результат выполнения функции (linp) зависит от величины m, которая в нашем

Результат выполнения функции (linp) зависит от величины m, которая в нашем

случае является единственным параметром функции.
Параметров может быть несколько и они разделяются запятой.
Слайд 13

Пример 3. # Программа func03. Вывод нужной строки из файла #

Пример 3.
# Программа func03. Вывод нужной строки из файла
# описание

функции
def fprint(ftxt,n): # ftxt – имя файла, n – номер строки
f=open(ftxt)
for k in range(0,n): # читаем первые n строк
s=f.readline()
print(s)
f.close()
# Основная часть программы
n=int(input('введите номер строки '))
fprint('f9.txt',n)
Слайд 14

Пример 4. Одна функция использует другую # Программа func04 def linp(m):

Пример 4. Одна функция использует другую
# Программа func04
def linp(m): # функция

из примера 2
print('*'*m)
def lin2p(m,s): # функция c двумя параметрами
# заставка к программе
linp(m)
print('Эту программу разработал ',s)
linp(m)
lin2p(35, 'Вова') # основная программа
Слайд 15

Результат выполнения программы: *********************************** Эту программу разработал Вова ***********************************

Результат выполнения программы:
***********************************
Эту программу разработал Вова
***********************************

Слайд 16

13.3. Инструкция return и возвращаемое значение Пусть в программе надо найти

13.3. Инструкция return и возвращаемое значение
Пусть в программе надо найти значение:
.
Для

удобства вычисления желательно иметь функцию:
.
В Python это можно оформить так:
Слайд 17

# Программа func05 # функция вычисления дроби def drob(a,b): x1=1+pow(a,0.5) x2=1+pow(b,0.5)

# Программа func05
# функция вычисления дроби
def drob(a,b):
x1=1+pow(a,0.5)
x2=1+pow(b,0.5)
x=x1/x2

return x # возврат значения
# основная программа
y=drob(2,7)+drob(5,6)+drob(3,11)
print('%10.3e'%y)
Слайд 18

или так: # Программа func05 # функция вычисления дроби def drob(a,b):

или так:
# Программа func05
# функция вычисления дроби
def drob(a,b):
x1=1+pow(a,0.5)
x2=1+pow(b,0.5)

return x1/x2 # возврат значения
# основная программа
y=drob(2,7)+drob(5,6)+drob(3,11)
print('%10.3e'y)
Слайд 19

или так: # Программа func05 # функция вычисления дроби def drob(a,b):

или так:
# Программа func05
# функция вычисления дроби
def drob(a,b):
return (1+pow(a,0.5)) /(1+pow(b,0.5))
#

основная программа
y=drob(2,7)+drob(5,6)+drob(3,11)
print('%10.3e'% y)
Слайд 20

В любом варианте выполнение функции заканчивается инструкцией return .

В любом варианте выполнение функции заканчивается инструкцией return .

Слайд 21

В любом варианте выполнение функции заканчивается инструкцией return . В нашем

В любом варианте выполнение функции заканчивается инструкцией return .
В нашем примере

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

В нашей функции drob(a,b) переменные являются позиционными.

В нашей функции drob(a,b) переменные являются позиционными.

Слайд 23

В нашей функции drob(a,b) переменные являются позиционными. Порядок параметров важен. drob(2,7)

В нашей функции drob(a,b) переменные являются позиционными.
Порядок параметров важен.
drob(2,7)
возвращает
0.6621991892442395 ,
а
drob(7,2)
возвращает
1.510119638082446

.
Слайд 24

# Программа func06 def sign(a): # в этой функции несколько return

# Программа func06
def sign(a): # в этой функции несколько return
if

a < 0:
return -1
elif a==0:
return 0
else:
return 1
# основная программа
a= float(input('Введите a '))
b=float(input('Введите b '))
print('результат: ', sign(a)+sign(b))
Слайд 25

# Программа func07 def sum (a): # функция вычисления суммы #

# Программа func07
def sum (a): # функция вычисления суммы
#

элементов списка
s=0
for i in range(len(a)):
s=s+a[i]
return s
# основная программа
b=[1,23,45,67,54]
print('Сумма равна', sum (b))
Слайд 26

или def sum (a): # функция вычисления суммы # элементов списка

или
def sum (a): # функция вычисления суммы
# элементов списка

s=0
for e in a:
s=s+e
return s
# основная программа
b=[1,23,45,67,54]
print('Сумма равна', sum (b))
Слайд 27

Задача. Написать программу вычисления величины где Вычисление f(x,y) оформить в виде вспомогательной функции.

Задача. Написать программу вычисления величины
где
Вычисление f(x,y) оформить в виде вспомогательной

функции.
Слайд 28

вход f=xy выход x x==y f=0 f= x2 +y2 нет да

вход

f=xy

выход

x

x==y

f=0

f= x2 +y2

нет

да

да

нет

# описание функции f(x,y)
def f(x,y):
if x f=x*y

elif x==y:
f=0
else:
f=x*x+y*y
return f
Слайд 29

начало ввод a и x s1=f(a,x) s2=f(a,4) s3=f(2,1) w=s1+s2+s3 вывод w

начало

ввод a и x

s1=f(a,x)

s2=f(a,4)

s3=f(2,1)

w=s1+s2+s3

вывод w

конец

# описание основной части
a=float(input('Введите а '))
x=float(input('Введите x

'))
s1=f(a,x)
s2=f(a,4)
s3=f(2,1)
w=s1+s2+s3
print(w)
input()
Слайд 30

13.4. Значение None Значение None – это «значение, не имеющее значения».

13.4. Значение None
Значение None – это «значение, не имеющее значения».
Оно используется,

например, в качестве возвращаемого значения в функции print().
Введем в интерактивной оболочке:
>>> a=print('Привет!' )
Привет!
>>> a==None
True
>>>
Мы видим, что переменная a имеет значение None
Слайд 31

Python незаметно для пользователя добавляет инструкцию return None в конец любой

Python незаметно для пользователя добавляет инструкцию
return None
в конец любой функции,
в

которой инструкция return отсутствует
или
используется без указания возвращаемого значения (т.е. только слово return)
Слайд 32

13.5. Именованные параметры В Python можно использовать именованные аргументы, именованным аргументам

13.5. Именованные параметры
В Python можно использовать именованные аргументы, именованным аргументам можно

присваивать значения невзирая на порядок.
С именованными аргументами мы встречались в функции
print(…, end=…, sep=…)
Слайд 33

Пример с именованными параметрами # функция вычисления дроби def drob(a,b): return

Пример с именованными параметрами
# функция вычисления дроби
def drob(a,b):
return (1+pow(a,0.5)) /(1+pow(b,0.5))
#

основная программа
print(drob(2,7))
print(drob(b=7,a=2))
Результат:
0.6621991892442395
0.6621991892442395
Слайд 34

13.6. Параметры по умолчанию При описании функции параметрам можно, хотя и

13.6. Параметры по умолчанию
При описании функции параметрам можно, хотя и не

обязательно, присваивать значения по умолчанию.
Слайд 35

# функция поздравления def denr(name='Вова',god=7): print('С днем рождения!',name) print('Вам сегодня исполняется',

# функция поздравления
def denr(name='Вова',god=7):
print('С днем рождения!',name)
print('Вам сегодня исполняется',

god)
# основная программа
denr()
denr(god=12)
denr(name='Катя')
denr('Ира',70)
denr(70,'Ира')
Слайд 36

13.7. Локальная и глобальная область видимости О переменных, получающих значения в

13.7. Локальная и глобальная область видимости
О переменных, получающих значения в теле

функции, говорят, что они существуют в локальной область видимости этой функции.
О переменных, получающих значения вне функции, говорят, что они существуют в глобальной область видимости.
Слайд 37

Переменные, существующие в локальной область видимости, называются локальными переменными. Переменные, существующие

Переменные, существующие в локальной область видимости, называются локальными переменными.
Переменные, существующие в

глобальной область видимости, называются глобальными переменными.
Переменная не может быть локальной и глобальной одновременно.
Слайд 38

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

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

которой присваивается значение в этой функции, существует в данной локальной видимости.
При возврате из функции локальная область видимости уничтожается, и эти переменные теряются.
Когда в следующий раз будет вызвана эта функция, локальные переменные не будут помнить предыдущие значения.
Слайд 39

Пример 1. Локальные переменные не видны в глобальной области видимости. def

Пример 1. Локальные переменные не видны в глобальной области видимости.
def

spam():
n=20123 # локальная область видимости
spam() # глобальная область видимости
print(n) # глобальная область видимости
Выполнение этого кода приведет к ошибке:
NameError: name 'n' is not defined
В основном коде переменная n не определена.
Слайд 40

Пример 2. В локальных областях видимости не видны переменные из других

Пример 2. В локальных областях видимости не видны переменные из других

локальных областей видимости.
def spam():
n=55
b()
print(n)
def b():
n=1
spam()
В этом примере две разные переменные n.
В результате выполнения этого кода будет выведено:
55
Слайд 41

Пример 3. Глобальные переменные могут читаться из локальной области видимости def

Пример 3. Глобальные переменные могут читаться из локальной области видимости
def spam():
print(n)
n=11
spam()
В

этом примере в теле функции spam переменная n не определяется и функция использует глобальную переменную n.
В результате выполнения этого кода будет выведено:
11
Слайд 42

Пример 4. Разные переменные могут иметь одно и то же имя,

Пример 4. Разные переменные могут иметь одно и то же имя,

если они в разных областях видимости.
def spam():
n='локальная в spam'
print(n)
def b():
n='локальная в b'
print(n)
spam()
print(n)
n='глобальная'
b()
print(n)
Слайд 43

В этом примере три разных переменных n. В результате выполнения этого

В этом примере три разных переменных n.
В результате выполнения этого кода

будет выведено:
локальная в b
локальная в spam
локальная в b
глобальная
Слайд 44

13.8. Инструкция global Если возникает потребность изменить в коде функции глобальную переменную, используют инструкцию global.

13.8. Инструкция global
Если возникает потребность изменить в коде функции глобальную переменную,

используют инструкцию global.
Слайд 45

Пример 1. Использование инструкция global def spam(): global n # n

Пример 1. Использование инструкция global
def spam():
global n # n глобальная

переменная
n='spam'
# основная часть кода
n='global'
spam()
print(n)
В результате выполнения этого кода будет выведено:
spam
Слайд 46

Правила определения типа переменной (локальная или глобальная) Если переменная используется в

Правила определения типа переменной (локальная или глобальная)

Если переменная используется в глобальной

области видимости (т.е. вне функции), то она является глобальной.
Если переменная была объявлена в функции с использованием инструкции global, то она является глобальной.
Если переменной нигде в функции не присваивается значение, то она является глобальной.
Если переменная используется в операции присваивания в функции, то она является
Слайд 47

Правила определения типа переменной (локальная или глобальная) Если переменная используется в

Правила определения типа переменной (локальная или глобальная)

Если переменная используется в глобальной

области видимости (т.е. вне функции), то она является глобальной.
Если переменная была объявлена в функции с использованием инструкции global, то она является глобальной.
Если переменной нигде в функции не присваивается значение, то она является глобальной.
Если переменная используется в операции присваивания в функции, то она является локальной.
Слайд 48

Пример 2. Локальные и глобальные переменные def spam(): global n n='spam'

Пример 2. Локальные и глобальные переменные
def spam():
global n
n='spam' #

n глобальная переменная
def b():
n= 'b' # n локальная переменная
def h():
print(n) # n глобальная переменная
# основная часть кода
n=55 # n глобальная переменная
spam()
print(n)
Слайд 49

В результате выполнения этого кода будет выведено: spam

В результате выполнения этого кода будет выведено:
spam

Слайд 50

Пример 3. Нельзя использовать в функции локальную переменную до присвоения ей

Пример 3. Нельзя использовать в функции локальную переменную до присвоения ей

значения
def spam():
print(n) # ошибка!!!
n= 'локальная spam' # n локальная переменная
# основная часть кода
n= 55 # n глобальная переменная
spam()
print(n)
Слайд 51

В результате выполнения этого кода получим: Traceback (most recent call last):

В результате выполнения этого кода получим:
Traceback (most recent call last):
File

"………………………………", line 6, in
spam()
File "………………………………", line 2, in spam
print(n) # ошибка!!!
UnboundLocalError: local variable 'n' referenced before assignment (локальная переменная 'n', на которую ссылаются перед присвоением)
Слайд 52

Лабораторная работа № 5 «Вспомогательные функции» Задание: Написать программу вычисления величины

Лабораторная работа № 5 «Вспомогательные функции»

Задание:
Написать программу вычисления величины z, которая

вычисляется по формуле (согласно своего варианта).
Вычисление функции y(u,t), через которую описывается величина z, оформить в виде вспомогательной функции.
Слайд 53

Варианты для величины z

Варианты для величины z

Слайд 54

Варианты для величины z

Варианты для величины z

Слайд 55

Варианты задания функции y(u,t)

Варианты задания функции y(u,t)

Слайд 56

Варианты задания функции y(u,t)

Варианты задания функции y(u,t)