Автор оригинала: Robin Andrews.
Вы, возможно, слышали, что Глобальные переменные опасны и следует избегать во всех расходах. Они могут даже сломать Интернет. Как страшно!
Однако оказывается расследование, что претензии преувеличены и что в некоторых ситуациях, Это нормально, чтобы использовать глобальные переменные Отказ Одной из этих ситуаций является при изучении навыков программирования, необходимых для компьютерных наук GCSE и уровня.
Это правда, что часто бывают лучшие альтернативы использования глобальных переменных, таких как передача параметров для функций или использования объектно-ориентированного программирования, но есть причина, по которой глобальный Ключевое слово существует на многих языках, включая Python. Когда сначала научиться программировать, одна из концепций, которые вы столкнетесь, это Переменная область охвата Отказ Давайте посмотрим на пару примеров, чтобы понять, что это значит.
# Global vs. local variables
name = 'Susan'
print(name)
def print_name():
name = 'Peter'
print(name)
print_name()
print(name)
Что вы ожидаете, что три строки вывода для этой программы?
Susan Peter Susan
Итак, Имя Переменная не модифицирована внутри функции. Это связано с тем, что по умолчанию переменные внутри функций являются Местный Отказ Они существуют только внутри функции и разрушаются после завершения вызова функции.
Теперь посмотрите на этот код:
# Global vs. local variables
name = 'Susan'
print(name)
def print_name():
global name
name = "Peter"
print(name)
print_name()
print(name)
Что вы ожидаете, что три строки вывода для этой программы?
Susan Peter Peter
Можете ли вы увидеть, почему это произошло? Потому что мы использовали глобальный Версия переменной Имя внутри print_name () Функция, значение Имя Снаружи функции тоже модифицирована!
Подумайте о спектре как тип Видимость Отказ Если объем переменной является глобальный Это может быть видно по всей программе. Если это Местный Это может быть только видно в текущей функции. Это становится все более сложным, когда мы начинаем вложенные функции, но основная идея довольно проста.
Контекст это все
Обучение программы и понять новые концепции – это определенный контекст. Написание комплексных приложений – это другой контекст. «Зло» глобальных переменных относительно. Для более крупных приложений, в частности, использование глобальных переменных может заставить свой код усердно поддерживать и следовать, и, как правило, следует избегать.
Однако далеко не разбив интернет, глобальные переменные на самом деле довольно распространены в WordPress , который является платформой, на которой построены примерно 30% сайтов по всему миру (включая этот). Большая часть ядра функционально WordPress использует PHP. Вот какой-то код, который вы можете найти на сайте WordPress:
global $wpdb;
$result = $wpdb->get_results ( "
SELECT *
FROM $wpdb->posts
WHERE post_type = 'page'
" );
foreach ( $result as $page )
{
echo $page->ID.'
';
echo $page->post_title.'
';
}
Global $ WPDB; Заявление дает доступ ко всем функциям объекта базы данных WordPress.
Вот главная вынос из этой статьи:
Глобальные переменные иногда в порядке. Вы, вероятно, не сломаете Интернет, если вы их используете.