Python:为什么两个全局变量有不同的行为?

时间:2016-06-18 02:47:14

标签: python scope global-variables local-variables

我还有一段这样的代码。

使用此代码我得到:

 foreach (byte[] doc in documents.Select(c => c.Content))
 {

    using (var ms = new MemoryStream(doc))
    {
       ms.Position = 0;

       var bm = new Bitmap(ms); //WHERE THE ERROR IS OCCURING

    //put image in pdf document
    }
}

为什么我需要全球评论制作'在第一个函数中声明但我不需要TARGET_LINES? (使用Python2.7)

local variable 'commentsMade' referenced before assignment

1 个答案:

答案 0 :(得分:1)

如果对函数体中的变量进行赋值,则Python将该变量视为本地变量(除非将其声明为全局变量)。如果您只是读取函数体内的值而不指定它,那么它会在更高的范围内查找变量(例如,父函数或全局函数)。

因此,在您的情况下,区别在于您分配给commentsMade,这使其成为本地,但您没有分配给TARGET_LINES,因此它会查找它的全局定义。< / p>