В python обычно очевидно, какие переменные являются локальными, а какие глобальными, поскольку для изменения глобальной переменной необходимо объявить ее с помощью ключевого слова global
в начале функции. Однако иногда я добавляю глобальное объявление, даже если Python не нуждается в его компиляции, чтобы подчеркнуть, что объект является глобальным - например, изменение изменяемой глобальной структуры данных.
Аргументы должны быть очевидны, потому что они есть в объявлении функции.
Как говорили другие, константы должны быть в UPPER_CASE_WITH_UNDERSCORES, что является соглашением, используемым многими языками.
Если вы обнаружите, что у вас возникают проблемы с отслеживанием глобальных, локальных переменных и переменных параметров, я полагаю, что проблема может заключаться в том, что ваши функции слишком длинные и выполняют слишком много. Функции и методы должны быть короткими и делать только одно. Я начинаю испытывать зуд рефакторинга, если мои функции превышают 10-20 строк кода.
Я рекомендую прочитать книгу «Чистый код» Роберта Мартина. Примеры приведены на Java, но принципы применимы ко всем языкам.