2.2- python变量作用范围 局部变量和全局变量

在前面的案例中我们看到主程序中包含了函数,在函数内部有自己的变量,在主程序也有自己的变量,那么这些变量是什么关系,怎么才能在函数内部使用主程序的变量。

1、局部变量
局部变量也称内部变量,局部变量是在函数内定义的,其作用域仅限于函数内,离开函数再使用这种变量是非法的。
例如:

def sum(m):
    s=0
    for p in range(m+1):
        s=s+p
        # 计算(1+2+...+m)的和
    return s

m=10
s=sum(m)
print(s)

其中 m、p、s变量都是局部变量。
关于局部变量的作用域说明如下:
1> 函数中定义的变量只能在函数中使用,不能再在其他函数中使用。同时,一个函数中也不能使用其他函数定义的变量。各个函数之间是平行关系,每个函数都封装了一块自己的区域
2> 形式参数变量是属于被调函数的局部变量,实际参数变量是属于主调函数的局部变量
3> 允许在不同的函数中使用相同的变量名,她们代表不同的对象,分配不同的单元,互不干扰。例如sum函数的 m、s变量与主程序的m、s变量同名,但它们是不同的变量

局部变量案例:

# 局部变量
def fun(x,y):
    print("in fun:",x,y)
    x=1
    y=2
    
x=100
y=200
fun(x,y)
print("out fun:",x,y)    

运行结果如下:

in fun: 100 200
out fun: 100 200

主程序中的x、y变量是主程序的局部变量,fun中的x、y变量是fun的局部变量,所以主程序中x、y变量与fun中的x、y变量不同,所以在调用fun之后主程序的x、y变量的值不变。

2、全局变量
如果一个函数内部要用到主程序的变量,那么可以在这个函数内部声明这个变量为global变量,这样函数内部用的就是主程序的变量。当在函数中改变了全局变量的值时,会直接影响到主程序的变量的值。
例如:

# 全局变量
def fun(x):
    global y
    y=0
    x=0
    
x=1
y=2
fun(x)
print(x,y) 

执行结果如下:

1 0

在fun函数中使用了global y声明fun中使用的y不是fun本地的y变量,而是主程序中的y变量。

3、全局变量与局部变量
1> 全局变量的作用域是整个程序,它在程序开始时就存在,任何函数都可以访问它,而且所有函数访问的同名称的全局变量是同一个变量,全局变量只有在程序结束时
才销毁。
2> 局部变量是函数内部的范围内的变量,当执行此函数时才有效,退出函数后局部变量就销毁。
3> 不同函数之间的局部变量是不同的,哪怕同名字也互不相干。
4> 局部变量有局部性,这使得函数有对立性,函数与外界的接口只有函数参数与它的返回值,使程序的模块化更突出,这样有利于开发大型的程序。
5> 全局变量具有全局性,是实现函数之间数据交换的公共途径,但大量地使用全局变量会破坏函数的独立性,导致程序的模块化程度下降,因此要尽量减少使用全局变量,多使用局部变量,函数之间应尽量保持其独立性,函数之间最好只通过接口参数来传递数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值