Когда вы кодируете следующие строки
q=[1,2,3]
def f():
print('q' in locals())
f()
Здесь переменная 'q' не является локальной для функции f (), так как она объявлена вне области действия функции. Внутри функции доступ к q можно получить с помощью Глобальный. Но вне функции 'q' есть локальная переменная. Поэтому, когда вы проверяете внутри функции
q=[1,2,3]
def f():
print('q' in locals())
, она возвращает False
Но если вы объявите внутри функции и проверите следующее: -
def f():
q=[1,2,3]
print('q' in locals())
It вернет True, поскольку q теперь локально для функции.
Также, если вы отметите 'q' внутри функции как глобальное, оно вернет True, поскольку 'q' объявлено вне функции и имеет глобальную область действия.
q=[1,2,3]
def f():
print('q' in globals())
f()
Выход
True