python学习——局部变量与全局变量

来源:互联网 发布:手机端js关闭当前页面 编辑:程序博客网 时间:2024/06/05 06:49

以Python核心教程(第二版)中例子11.9为例,来说明一下python中的局部变量与全局变量的用法:

#!/usr/bin/env pythonj,k = 1,2def proc1():    j,k = 3,4    print("j == %d and k== %d" % (j,k))    k = 5def proc2():    j = 6    proc1()    print("j == %d and k== %d" % (j,k))k = 7proc1()print("j == %d and k== %d" % (j,k))j = 8proc2()print("j == %d and k== %d" % (j,k))

得到结果为:

j == 3 and k== 4j == 1 and k== 7j == 3 and k== 4j == 6 and k== 7j == 8 and k== 7

下面来详细讲解一下程序中是怎么寻找j,k变量的。

首先给定一个原则:函数中的变量为局部变量,首先在该函数体中寻找该变量的值,且是按顺序寻找的,找不到的话再去函数外面的全局变量需找。同理,函数外部的变量首先在全局变量寻找,寻找不到就找不到了,函数中定义的话,是没用的。

1、j == 3 and k== 4
程序中首先执行的是proc1(),此时在函数proc1()中寻找j,k的局部变量,为j=3,k=4。

2、j == 1 and k== 7
程序然后执行:print(“j == %d and k== %d” % (j,k))
在全局变量中寻找变量j,k的值,得到答案。

3、j == 3 and k== 4
程序随后执行proc2()。
函数proc2()中首先执行proc1(),此时得到的结果如同1.

4、j == 6 and k== 7
然后执行函数proc2()中的:print(“j == %d and k== %d” % (j,k))
此时先从函数proc2()中寻找j,k的值,结果只找到第10行,j=6,k值函数proc2()中没有定义,就从函数外寻找,找到第14行的,k=7,得到结果。

5、j == 8 and k== 7
这个就很明显了,从全局变量寻找变量的值。

PS:当然,这只是很简单的用法,以后遇到复杂的会结合这个简单的例子继续进行分析的。