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

本文通过Python核心教程中的示例,详细解释了Python中局部变量与全局变量的作用范围及查找规则,并通过具体运行结果展示了变量查找的过程。

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

#!/usr/bin/env python
j,k = 1,2

def proc1():
    j,k = 3,4
    print("j == %d and k== %d" % (j,k))
    k = 5

def proc2():
    j = 6
    proc1()
    print("j == %d and k== %d" % (j,k))

k = 7
proc1()
print("j == %d and k== %d" % (j,k))

j = 8
proc2()
print("j == %d and k== %d" % (j,k))

得到结果为:

j == 3 and k== 4
j == 1 and k== 7
j == 3 and k== 4
j == 6 and k== 7
j == 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:当然,这只是很简单的用法,以后遇到复杂的会结合这个简单的例子继续进行分析的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值