global для переменной, которая не была инициализирована в глобальной области видимости до вызова функции, то при первом присваивании значения этой переменной внутри функции, она будет создана как глобальная переменная.  То есть, global позволяет функции работать с переменной, существующей вне ее области видимости, даже если эта переменная еще не определена в глобальной области на момент определения функции.
Если в функции использовать ключевое слово global для переменной, которая до этого не была инициализирована в глобальной области видимости, произойдет следующее:
print(x)) до присвоения, возникнет исключение NameError. Python сначала попытается найти переменную в локальной области видимости функции. Если её там нет, а используется global, то Python поймёт, что переменная должна быть глобальной. Но поскольку переменная не определена в глобальной области видимости *до* ее использования в функции, будет выброшено исключение.x = 10) после объявления global x, то переменная будет создана в глобальной области видимости. То есть, Python создаст новую глобальную переменную с указанным именем.  После выполнения функции, глобальная переменная будет доступна для использования вне функции.Пример 1 (Ошибка NameError):
def my_func():
    global x
    print(x)  # Ошибка NameError: name 'x' is not defined
    x = 10
my_func()
  Пример 2 (Создание глобальной переменной):
def my_func():
    global x
    x = 10
    print(x)  # Вывод: 10
my_func()
print(x)  # Вывод: 10
  Важно помнить: Использование global стоит избегать, когда это возможно, поскольку это делает код более сложным для понимания и отладки. Лучше передавать данные в функцию и возвращать их из функции, чем использовать глобальные переменные.