def func():
global x
print 'x is', x
x = 2
print id(x)
print 'Changed global x to', x
x = 50
print id(x)
func()
print 'Value of x is', x
print id(x)
выходидентичность питон для глобальных переменных
32308172
x is 50
32308748
Changed global x to 2
Value of x is 2
32308748
Я ожидаю id()
должен возвращать одинаковое значение для всех трех раз, так как же копия x
используется всеми во всем мире. Почему это так.
Целые являются незыблемыми, и 'global' относится к ** имя **' x', не то, что основной объект это случается назначен. Посмотрите, например. http://nedbatchelder.com/text/names.html – jonrsharpe
это идентификатор объекта, а не переменной. try: 'a = 1'' id (a) '' b = 1' 'id (b)' – Roberto
@Roberto в CPython, этот пример может приводить к запутывающим результатам, так как маленькие целые числа * интернированы *. – jonrsharpe