Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # кроме глобального пространства имен существует пространство nonlocal, которое является промежуточным между global и local. Это имена, которые находятся в пространстве на пути от локального до глобального
- # НО! главное что это пространство которое не равно ни global и ни local
- # Пример
- # Если мы наш пример со словами обернём в функцию f() то вывод функции будет работать не так как мы хотим, потому ...
- def f():
- ok_status = True
- vowels = ['a','u','i','e','o']
- def check(word):
- global ok_status # ... что мы имя ok_status которое равно True, делая глобальным, выносим за поля функции f(). Чтобы имя ok_status оставалось внутри функции f() нужно использовать конструкцию nonlocal
- #nonlocal ok_status
- for vowel in vowels:
- if vowel in word:
- return True
- ok_status = False
- return False
- print(check('abacaba'))
- print(ok_status)
- print(check('www'))
- print(ok_status)
- f()
- # True
- # True
- # False
- # True
- print(ok_status) # False
- #
- #
- print('#') # Second part of programm
- #
- #
- def f():
- ok_status = True
- vowels = ['a','u','i','e','o']
- def check(word):
- nonlocal ok_status
- for vowel in vowels:
- if vowel in word:
- return True
- ok_status = False
- return False
- print(check('abacaba'))
- print(ok_status)
- print(check('www'))
- print(ok_status)
- f()
- # True
- # True
- # False
- # False
- #print(ok_status) # NameError
Advertisement
Add Comment
Please, Sign In to add comment