Jest to nazwa tymczasowa używana w zrozumieniu list przez Python 2.6 i wcześniej. Python 2.7 i Python 3.x naprawiły tę brodawkę: tworzona lista nie jest już dostępna, dopóki tworzenie się nie zakończy.
W skrócie był to szczegół wdrożenia, na który nikt nigdy nie powinien polegać.
Tutaj można zobaczyć, że Python 2.7 liści locals()
niezmienione podczas Python 2.6 tworzy krótki żywo tymczasowa:
Python 2.7.2 (default, Jan 5 2012, 16:24:09)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo():
t = [list(locals().keys()) for x in range(1) ]
print(locals())
print(t[0])
>>> foo()
{'x': 0, 't': [['x']]}
['x']
>>>
Python 2.6.7 (r267:88850, Jan 5 2012, 16:18:48)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo():
t = [list(locals().keys()) for x in range(1) ]
print(locals())
print(t[0])
>>> foo()
{'x': 0, 't': [['_[1]', 'x']]}
['_[1]', 'x']
>>>
Python 3.x wprowadza nowy krótkotrwałe tymczasowe dla listowych nazywa .0
. Nie ulegaj pokusie, aby użyć tego do czegokolwiek. Również cała lista rozumienie prowadzi w oddzielnej przestrzeni nazw tak zmienne pętlowe nie są dostępne poza pętlą albo:
Python 3.2 (r32:88445, Jan 5 2012, 16:29:57)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo():
t = [list(locals().keys()) for x in range(1) ]
print(locals())
print(t[0])
>>> foo()
{'t': [['.0', 'x']]}
['.0', 'x']
Nie tylko jest to zły szczegółów wdrażania, został usunięty w Pythonie 2.7. Nie używaj go. – Duncan