栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python变量作用域

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python变量作用域

   变量作用域其实就是相当于变量的命名空间,赋值过的变量并不是在哪里都可以使用,如何定义变量决定了变量可以在哪里被使用,Python 中变量赋值的位置 决定了 那些范围内的对象可以访问这个变量,这个范围就被成为变量域。

  Python中有两种最基本的变量作用域:局部变量和全局变量。

局部变量

  一般情况下,在函数内部赋值的变量,不做特殊声明的都是局部变量,顾名思义,局部变量的作用域是局部的,在当前函数赋值则只能在当前使用。

  如果在函数体中第一次出现的,就是局部变量:

#!/use/bin/env python2.7
# -*_ coding: utf-8 _8_
def  hankai_ceshi():
    x = "韩锴"
    print (x)
    y = "汉"
    print (y)

hankai_ceshi()

执行结果如下:

韩锴

   可以看到,函数内正确打印出了 ”x“,”y“变量的内容,x,y 是在函数体内被赋值的,所以 变量是局部变量,局部变量只能在函数体内被访问,超出函数体的返回就不能正常执行。例如:

#!/use/bin/env python2.7
# -*_ coding: utf-8 _8_
def  hankai_ceshi():
    x = "韩锴"
    print (x)
    y = "汉"
    print (x,y)

hankai_ceshi()

print (x,y)

执行结果如下:

韩锴
韩锴 汉
Traceback (most recent call last):
  File "D:/python/PyCharm 2021.1.2/mysql_cnf.py", line 11, in
    print (x,y)
NameError: name 'x' is not defined

   从结果来看,在函数体内的print() 执行成功,有返回值,函数体外的print() 执行失败,并且收到错误的信息:“x” 没有定义。

   不只在函数体内赋值的变量是局部变量,函数定义时的参数也是局部变量,例如:

#!/use/bin/env python2.7
# -*_ coding: utf-8 _8_
def  hankai_ceshi(x):
    print (x)

hankai_ceshi("韩锴")

print (x)

执行结果:

韩锴
Traceback (most recent call last):
  File "D:/python/PyCharm 2021.1.2/mysql_cnf.py", line 8, in
    print (x)
NameError: name 'x' is not defined

   这个例子和上一个例子都得到相同的结果,在函数体内的 print() 成功执行,但是函数体外的 print()  执行失败,并且收到错误的信息:x 没有定义,这就说明函数声明时的参数也是局部变量

全局变量

   在函数外赋值的变量就是全局变量,全局变量可以在整个程序范围内被访问,例如:

#!/use/bin/env python2.7
# -*_ coding: utf-8 _8_

x = "韩锴"
def  hankai_ceshi():
    print (x)

hankai_ceshi()
print (x)

 执行结果:

韩锴
韩锴

   从执行结果看,可以知道,函数hankai_ceshi中 print() 。被正常执行,说明函数外的变量可以正常地在函数体内访问,但是,函数体内的重新赋值的相同函数名字并不会改变函数体外的全局变量:例如:

#!/use/bin/env python2.7
# -*_ coding: utf-8 _8_

x = "函数体外:韩锴"
def  hankai_ceshi():
    x = "函数体内:汉"
    print (x)

hankai_ceshi()
print (x)

  执行结果:

函数体内:汉
函数体外:韩锴

  从执行结果中,可以看到,函数hankai_ceshi,对”x“ 进行赋值操作时,并没有改变函数体外的”x“变量,说明如果在函数体内对”x" 进行修改,(其实时创建了一个新的变量,只是名字与函数体外的”x“ 变量相同),但并不会修改 函数体外的”x“值

   如果想对函数体外的变量进行修改,应该怎么操作,这就需要使用"global" 关键字,例如:

#!/use/bin/env python2.7
# -*_ coding: utf-8 _8_

x = "函数体外:韩锴"
def  hankai_ceshi():
    global x
    x = "函数体内:汉"
    print (x)

hankai_ceshi()
print (x)

执行结果:

函数体内:汉
函数体内:汉

   从执行结果,可以知道,在函数体内修改全局变量”x” 为 函数体内,函数体外的全局变量“x” 也变成了  函数体内,所以如果要在函数体内修改 全局变量,就一定要添加 “global” 关键字

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339576.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号