Я завершаю ответ S.Lott.
Я бы сказал, пространство имен - это способ реализации управления именами внутри области видимости, потому что область действия больше, чем управление именами.
В C области действия имеют 4 типа: глобальный, функциональный, блок и функциональные параметры (прототип). Каждый из этих типов может создавать одно или несколько пространств имен, в зависимости от потребностей. В C-тегах есть 4 ns для s / u / e - идентификаторов для имен типов, имен функций и имен переменных - параметры внутри прототипа функции - члены и битовые поля внутри s / u.
Like что идентификаторы тегов и имена функций не сталкиваются, но typenames, определенные typedef, могут сталкиваться с именами переменных.
В python имеется встроенное пространство имен, которое охватывает глобальные ns, а глобальные ns предоставляются загруженный модуль. Встроенные переменные содержат переменные. Символ для переменной может определять объект или функцию - например, здесь определяется +
. Глобальные ns модуля продолжаются до завершения.
Попробуйте заменить эти строки:
random_index = random.randrange(len(enemies))
x = random.randint(0, 5)
Сгенерирована ошибка: NameError: имя 'randrange' не определено
blockquote>random_index = randrange(len(enemies))
должно быть
random_index = random.randrange(len(enemies))
Аналогично:
x = randint(0,5)
должно быть
x = random.randint(0,5)
В качестве альтернативы, вы также можете добавить приведенный ниже оператор в строку импорта:
from random import randrange, randint
Просто добавьте вверху вашего кода следующую строку
from random import randrange, randint