在Python中,对象是通过名字进行关联和引用的。Python通过名字绑定操作来引入名字。
Python中的所谓的代码块就是一段作为执行单元的程序。比如:模块、函数、类定义。在交互式环境中输入的命令也是代码块的一种。一个Python脚本文件也是一个代码块。还有就是,当我们在命令行上使用-c选项指定的命令也是一个代码块。传递给内建函数eval()和exec()的字符串参数也是代码块的一种。
代码块是以执行帧的方式被执行的,一个执行帧包含了一些管理信息,可以用于调试。执行帧还会在执行完当前的代码块以后指定在何处,以怎样的方式执行接下来的代码。
Python中的作用域定义了名字在代码块中的可见性。如果在代码块中定义了一个局部变量,那么这个局部变量的作用域就是所在的这个代码块。如果这个定义发生在函数体内,则这个变量的作用域就扩展到包含在这个函数中的任何代码块中,但是,如果包含在这个函数中的一个代码块中,同样的名字被绑定到了不同的对象上,那么外面的名字将不能被扩展到这个代码块中。
复制内容到剪贴板
代码:
def out_func():
#a的作用域在out_func这个函数中
a = 0
b = 0
def in_func():
#a的作用域从out_func扩展到了in_func中,因为in_func这个代码块包含在out_func中
print(a)
#out_func函数中的b不能扩展到in_func中,因为在in_func中,b重新绑定到了不同的对象上,所以在out_f