Python: 局部变量的作用域


我们知道下面这段 C 代码肯定是行不通的。

void test(bool x)
{
    if (x)
    {
        int a = 1234;
    }

    printf("%d ", a);
}
编译会出现 "error: ‘a’ undeclared (first use in this function)" 错误。

但在 Python 中是可行的。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

def test(x):
    if x:
        a = 1234
        print hex(id(a)), locals()

    print hex(id(a)), locals(), a

test(True)
执行:
$ ./main.py

0x100253268 {a: 1234, x: True}
0x100253268 {a: 1234, x: True} 1234
也就是说整个函数内部都是通过一个字典(locals)来维持环境的。

-------

Python 2.6.5, Mac OSX 10.6

相关内容

    暂无相关文章

评论关闭