Почему объекты, обозначенные "k" и "p", не являются глобальными?
my_global = 5
def func1(n=5):
global my_global, k, p
k = 10
p = 15
return my_global + n + k + p
all_gobals = globals()
print(k in all_gobals)
print(func1())
Выход:
print(k in all_gobals )
NameError: name 'k' is not defined
globals () дает мне:
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f1649b48c88>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/home/pawel/PycharmProjects/test/exerc.py', '__cached__': None, 'random': <module 'random' from '/usr/lib/python3.6/random.py'>, 'itertools': <module 'itertools' (built-in)>, 'string': <module 'string' from '/usr/lib/python3.6/string.py'>, 'a': 20, 'is_perfect_number': <function is_perfect_number at 0x7f1649b7ae18>, 'is_palindrome': <function is_palindrome at 0x7f16497e31e0>, 'ask_for_help': <function ask_for_help at 0x7f16486a5bf8>, 'method': <function method at 0x7f16486a5c80>, 'my_global': 5, 'func1': <function func1 at 0x7f16486a5d08>, 'all_gobals': {...}}
Почему выполнение print (k) дает?:
NameError: name 'k' is not defined
Объект 'k' был определен как глобальный, почему я не могу использовать его вне функции?
Я видел следующую тему, и она должна работать:
Использование "глобального" ключевого слова в Python