Программирование на языке Python. Области видимости переменных. Вложенные функции

Содержание

Слайд 2

Понятие вложенной функции def func1(): print('Создаем вложенную функцию..') def func2(): print('Выполняется

Понятие вложенной функции

def func1(): print('Создаем вложенную функцию..') def func2(): print('Выполняется вложенная

функция..') func2() print('Завершилась основная функция.') func1()
Слайд 3

Локальные, глобальные и нелокальные переменные name = 'Олег' def print_hello(): print('Привет,', name) print_hello()

Локальные, глобальные и нелокальные переменные

name = 'Олег' def print_hello(): print('Привет,', name) print_hello()

Слайд 4

Локальные и глобальные переменные Глобальные переменные (они так называются потому, что

Локальные и глобальные переменные

Глобальные переменные (они так называются потому, что были

созданы в глобальном поле видимости) на то и глобальные, что доступны везде: в функциях, во вложенных функциях, вне каких-либо функций и так далее.
Слайд 5

Локальные и глобальные переменные name = 'Олег' def print_hello(): name =

Локальные и глобальные переменные

name = 'Олег' def print_hello(): name = 'Артем' print('Привет,',

name) print_hello() print(name) # изменится ли глобальная переменная?
Слайд 6

Локальные и глобальные переменные name = 'Олег' def print_hello(): name =

Локальные и глобальные переменные

name = 'Олег' def print_hello(): name = 'Артем' print('Привет,',

name) print_hello() print(name)

Локальная переменная name затенила
глобальную переменную с таким же
именем!

Слайд 7

Изменение глобальной переменной из функции counter = 0 def func(): counter

Изменение глобальной переменной из функции

counter = 0 def func(): counter += 1

print('Функция была вызвана', counter, 'раз') func() func() func()
Слайд 8

Изменение глобальной переменной из функции counter = 0 def func(): counter

Изменение глобальной переменной из функции

counter = 0 def func(): counter += 1

print('Функция была вызвана', counter, 'раз') func() func() func()
Слайд 9

В чем проблема? counter = 0 def func(): counter = counter

В чем проблема?

counter = 0 def func(): counter = counter + 1

# изменили инкремент print('Функция была вызвана', counter, 'раз') func() func() func()
Слайд 10

Инструкция global counter = 0 def func(): global counter counter =

Инструкция global

counter = 0 def func(): global counter counter = counter +

1 print('Функция была вызвана', counter, 'раз') func() func() func()
Слайд 11

Инструкция global computer_performance = 0 computer_weight = 0 computer_type = 0

Инструкция global

computer_performance = 0 computer_weight = 0 computer_type = 0 # 0 -

стационарный компьютер, 1 - ноутбук def init_computer(): global computer_performance, computer_weight if computer_type == 0: computer_performance = 100 computer_weight = 10 elif computer_type == 1: computer_performance = 75 computer_weight = 3 init_computer() print(computer_performance) print(computer_weight)
Слайд 12

Локальные переменные и аргументы функции Аргументы функции являются локальными переменными и

Локальные переменные и аргументы функции

Аргументы функции являются локальными переменными и могут

затенять глобальные переменные
place = 'Сургут' def print_invite(name, place): print('Привет, ', name, '!', sep='') print('Приглашаем вас посетить наш чудесный город:', place) print_invite('Маша', 'Сухой Лог')
Слайд 13

Нелокальные переменные var1 = 0 def func1(): var2 = 1 def

Нелокальные переменные

var1 = 0 def func1(): var2 = 1 def func2(): var3

= 3 print(var1, var2, var3) func2() func1()

Как изменить переменную var1 из функции func2?

Слайд 14

Нелокальные переменные var1 = 0 def func1(): var2 = 1 def

Нелокальные переменные

var1 = 0 def func1(): var2 = 1 def func2(): global

var1 var3 = 3 var1 = 4 print(var1, var2, var3) func2() print('var1 после вызова func2:', var1) func1()
Слайд 15

Нелокальные переменные var1 = 0 def func1(): var2 = 1 def

Нелокальные переменные

var1 = 0 def func1(): var2 = 1 def func2(): global

var1 var3 = 3 var1 = 4 print(var1, var2, var3) func2() print('var1 после вызова func2:', var1) func1()

А как тогда изменить переменную var2 из функции func2?

Слайд 16

Нелокальные переменные var1 = 0 def func1(): var2 = 1 def

Нелокальные переменные

var1 = 0 def func1(): var2 = 1 def func2(): global

var1 nonlocal var2 var3 = 3 var2 = 5 var1 = 4 print(var1, var2, var3) func2() print('var1 после вызова func2:', var1) print('var2 после вызова func2:', var2) func1()