零基础 学 python开发 (Genius套餐A)十四

版权声明:Genius https://blog.csdn.net/weixin_41987706/article/details/90022480

夜光序言:

 

 

心如止水,方能气贯长虹。

 

 

正文:

3.2 Python 变量范围 
3.3.1 夜光:目标 


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

目标就是要分清这些变量的性质,掌握局部变量与全局变量的使用。
 



3.2.2 局部变量 


局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内,
离开该函数后再使用这种变量是非法的。


例 3-2-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 变量同名,但它们是不同的变量。
 



例 3-2-2: 局部变量。 


 

def fun(x, y) :
print("In fun:",x,y)
x=1
y=2
x=100
y=200
fun(x,y)
printf(x,y)


执行该程序,结果:
In fun 100 200
100 200

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

 



3.2.3 全局变量 
1、全局变量的作用域 


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

例 3-2-3: 全局变量。 

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-2-4: 全局变量。 


def A(x):
 global y
 y=0
 x=0
def B(x):
 global y
 y=10
 x=0
x=1
y=2
A(x)
B(x)
print(x,y)


执行该程序结果为:
1 10
那是因为在 A,B 函数中我们使用了 global y 声明 A,B 中使用的 y 不是本地的 y 变量,而是主程序的 y 变量。


2、全局变量与局部变量 

前面已经讲到全局变量的作用域是整个程序,它在程序开始时就存在,任何函数都可以访问它,而且所有函数访问的同名称的全局变量是同一个变量,全局变量只有在程序结束时才销毁。

局部变量是函数内部的范围内的变量,当执行此函数时才有效,退出函数后局部变量就销毁。不同的函数之间的局部变量是不同的,哪怕同名字也互不相干。

局部变量有局部性,这使得函数有对立性,函数与外界的接口只有函数参数与它的返回值,使程序的模块化更突出,这样有利于开发大型的程序。

全局变量具有全局性,是实现函数之间数据交换的公共途径,但大量地使用全局变量会破坏函数的独立性,导致程序的模块化程度下降,因此要尽量减少使用全局变量,多使用局部变量,函数之间应尽量保持其独立性,函数之间最好只通过接口参数来传递数据。


3.2.4 【案例】省份与城市的输入与显示 


1、案例描述 
用一个函数输入省份与城市,用另外一个函数显示。


2、案例分析 
设计一个输入函数 enter,它输入省份 province 与城市 city,用另外一个函数 show 显示它们,由于 enter 要返回 province,city 两个数据,我们暂时还没有办法做到,因此把province,city 设计成全局变量。


3、案例代码 
 

def enter():
 global province
 global city
 province=input("省份:")
 city=input("城市:")
def show():
 print("省份:"+province+" 城市:"+city)
province=""
city=""
enter()
show()



执行结果:
省份:广东
城市:深圳
省份:广东 城市:深圳

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/90022480