博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python global语句 变量作用域
阅读量:4171 次
发布时间:2019-05-26

本文共 1119 字,大约阅读时间需要 3 分钟。

变量作用域决定了这个变量能够被访问的范围,因为python不需要做变量声明,所以变量出现在哪里,他的作用范围就在哪里。

关于全局变量和局部变量,可以这样认为:在函数中的变量是局部变量,而在程序代码主体部分的是全局变量。python2举例如下:

1》

globalStr='Hello' #位于程序代码主体部分,是一个全局变量,在函数foo()内部可见

def foo():

    localStr='world!' #位于函数内部,是一个局部变量,在函数foo()内部可见

    return globalStr+' '+localStr

运行结果:

>>> foo()

'Hello world!'

2》

a=3 #全局变量

def f(x):
    print a #访问全局变量
    b=5
    print b+x+a

运行结果:

>>> f(10)

3
18

3》

def f(x):

    print a #访问全局变量

    b=5

    print a+x+b

a=3 #全局变量

运行结果:

>>> f(100)

3
108

4》全局变量和局部变量用同一个名字,要遵循一个原则:内层屏蔽外层

a=3 #全局变量

def f():

    a=5 #局部变量

    print a**2 #访问局部变量

运行结果:

>>> f()

25

5》

a=3 #全局变量

def f(x):

    print a #a被视为局部变量,并报错

    a=5

    print a+x

运行结果(错误信息):

UnboundLocalError: local variable 'a' referenced before assignment

6》

def f(x):

    print a #a被视为局部变量,并报错
    a=5 
    print a+x
a=3 #全局变量

运行结果(错误信息):

UnboundLocalError: local variable 'a' referenced before assignment

7》在函数内修改一个全局变量的值

def f(x):

    global a #global语句强调全局变量,强调函数内的a指的是全局变量a

    print a

    a=5 #修改全局变量a

    print a+x

a=3 #全局变量

f(10) #函数执行过程中,修改了全局变量a的值

print a #输出修改后的全局变量a

运行结果:
3
15
5

总结:在程序设计中,我们一般要求模块的内聚性要强,跟其他模块的耦合性要弱,显然全局变量并不符合这一原则。当然我们并不是说全局变量完全不能用,如果全局变量的使用能够给程序的性能带来很大的提高,或者说设计起来会更容易的话,我们也可以适当地使用一些全局变量

转载地址:http://wbyai.baihongyu.com/

你可能感兴趣的文章
【算法概论】分治算法:查找中位数
查看>>
【算法概论】分治算法:k路归并
查看>>
Python debug 一
查看>>
Spyder启动慢
查看>>
【算法概论】动态规划:最短路径问题
查看>>
别再让C++头文件中出现“using namespace xxx;”
查看>>
【数据结构】图 - 邻接表表示法
查看>>
向量vector的初始化
查看>>
【算法概论】动态规划:最大相连子序列
查看>>
【算法概论】动态规划的主要属性及优质链接
查看>>
【算法概论】动态规划:最长递增子序列
查看>>
【算法概论】动态规划:矩阵连乘问题
查看>>
【算法概论】动态规划:最长公共子序列
查看>>
【算法概论】动态规划:背包问题
查看>>
【java】类初始化时的变量值、类变量、局部变量、实例变量
查看>>
寻址方式
查看>>
【算法概论】动态规划:字符串拆分
查看>>
【算法概论】贪心算法:区间调动问题
查看>>
【算法概论】贪心算法
查看>>
【算法概论】贪心算法:反馈边集总权重最小
查看>>