Що я розумію з читання документації, це те, що Python має окремий простір імен для функцій, і якщо я хочу використовувати глобальну змінну в цій функції, мені потрібно використовувати global
.
Я використовую Python 2.7, і я спробував цей невеликий тест
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
... return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
Здається, все працює нормально навіть без global
. Я зміг отримати доступ до глобальної змінної без жодних проблем.
Я щось пропускаю? Також з документації Python:
Імена, перелічені в глобальному операторі, не повинні визначатись як формальні параметри або як ціль керування циклом, визначення класу, визначення функції або імпорт імпорту.
Хоча формальні параметри та визначення класу мають сенс для мене, я не в змозі зрозуміти обмеження на визначення цілі та визначення функції циклу.
def foo(): ...
і foo = ...
одночасно). Це створює нову область для кожного виклику функції. (Але чим це відрізняється від будь-якої іншої мови віддаленого високого рівня у світі?)