全局变量和局部变量
python 中没有块级作用域
for i in range(5)
print i
pirnt i*i
程序可以正常执行,变量i虽然是for循环内部的,但是因为不存在块级作用域,所以最后print i * i 依然可以执行。
相信这点对大部分的人不难理解。
定义在全局作用域的变量称为全局变量,除非全局变量被删除掉,否则他会存活一直到脚本运行结束。脚本内部所有的函数都可以使用他们。
定义在局部作用域(通常是函数,类)的变量称为局部变量,暂时的存在,只依赖于定义他们的函数或者类现阶段是否处于活动。当一个函数调用出现时,其局部变量就进入声明他们的作用域。
def test():
i=123
print i
print i
运行会报错,因为变量i在局部作用域中,所以在全局中调用会错误。
test()
print i
那我们先调用该函数试试呢,还是会报错,就像我们说的。
当函数运行结束时,其中声明的变量也就失效了。
优先级
python 首先从局部作用域开始搜索。找到后就停止,否则继续往上层寻找,最后找不到就会抛出异常。