Функция square
никогда не изменяет переменную squared
, которая находится в глобальной области. Внутри функции вы объявляете локальную переменную с тем же именем, что и глобальная переменная, однако это изменит локальную переменную, а не глобальную переменную. Затем, когда вы print(squared)
, вы печатаете эту неизменную глобальную переменную, которая по-прежнему равна 0, когда вы ее первоначально устанавливали. В связи с чистотой кода вы действительно должны стараться избегать использования локальных переменных и глобальных переменных, имеющих одно и то же имя, поскольку это вызывает путаницу (как мы видели в этом вопросе) и делает код намного сложнее читать.
Чтобы изменить глобальную переменную изнутри функции, вы должны сообщить Python об этом, используя global
keyword, чтобы сделать имя ссылкой на глобальную переменную. Вы можете посмотреть на этот вопрос: Use of "global" keyword in Python
Проще и лучше, конечно, просто использовать возвращаемое значение функции. Сведение к минимуму использования глобального изменчивого государства - хорошая цель.
Вам нужно объявить его глобальным, иначе вы создадите новое имя 'squared' в области функции' square'. –
Зачем вам ждать 100? В чем смысл функции, функции предоставляют ** локальную область видимости **. –
@ Ашвини хорошо было бы 100, пока функция не будет вызвана снова с другим n. –