, Где x найден?
x не найден, поскольку Вы не определили его.:-) можно было найти в (глобальном) code1 или code3 (локальный) при помещении его там.
code2 (участники класса) не видимы для кодирования внутренних методов того же class —  you, обычно получал бы доступ к ним использование сам. code4/code5 (циклы) живут в том же объеме как code3, поэтому если бы Вы записали в x там, то Вы изменили бы x экземпляр, определенный в code3, не делая новое x.
, Python статически ограничен по объему, поэтому при передаче вЂspam’ другому функциональному спаму, будет все еще иметь доступ к globals в модуле, это прибыло из (определенный в code1), и любой другой содержащий объемы (см. ниже). к участникам code2 снова получили бы доступ через сам.
лямбда не отличается от определения, Если Вам использовали лямбду в функции, это совпадает с определением вложенной функции. В Python 2.2 вперед, вложенные объемы доступны. В этом случае можно связать x на любом уровне функционального вложения, и Python возьмет самый внутренний экземпляр:
x= 0
def fun1():
x= 1
def fun2():
x= 2
def fun3():
return x
return fun3()
return fun2()
print fun1(), x
2 0
fun3 видит экземпляр x от самого близкого, содержащего объем, который является функциональным объемом, связанным с fun2. Но другие x экземпляры, определенные в fun1 и глобально, не затронуты.
Прежде nested_scopes —  in Python пред2.1, и в 2,1, если Вы конкретно не просите функцию с помощью from-future-import —  fun1 и объемы fun2, не видимы к fun3, таким образом, ответ S.Lott содержит, и Вы получили бы глобальный x:
0 0
Уловка состоит в том, чтобы всегда использовать правильный командный файл vcvars. ЕСЛИ у вас установлена только одна версия VisualStudio, это не проблема. Если вы имеете дело с несколькими версиями, как я, становится очень легко запустить сборку MSVC ++ 14 в консоли, которая была настроена с файлом vcvars MSVC ++ 15. Это может сработать, а может и не сработать, но все, что вы получите, будет отличаться от того, что вы собираетесь строить в VisualStudio.
Мы решили эту проблему в terp , создав соответствующий файл vcvars. из выбранного компилятора и всегда настраивать среду внутренне для вызова инструмента. Таким образом, у вас всегда будет правильный файл vcvars для используемого вами компилятора.
Просто повторяю: я настоятельно не рекомендую пытаться вручную дублировать то, что файл vcvars делает за вас. Вы'