python作用域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python作用域相关的知识,希望对你有一定的参考价值。

全局变量

不是在函数内部定义的变量,一般定义在程序开始的时候,全局变量的作用范围在整个执行程序的过程都有效。包括函数内部。

局部变量

字符串、整型类型

在函数内部定义的变量叫局部变量,局部变量的作用范围只在这个函数内部有效。如果这个局部变量的变量名和全局变量的变量名相同,局部变量会覆盖全局变量。

 

比如定义一个全局变量和局部变量:

name = ‘zhangshan‘#全局变量
def fun1():
    name = ‘xiaoming‘#局部变量
    print(name)
print(name)#zhangshan
fun1()#xiaoming
print(name)#zhangshan
 列表、集合等类型

Python中还有其它的数据类型,如列表、集合等。不同的数据类型,作用域也不同。

name = [‘jack‘,‘susan‘,‘lily‘]
person ={‘name‘:‘lily‘,‘sex‘:‘woman‘}

def fun1():
    name[0] = ‘lucy‘
    person[‘name‘] = ‘hanmeimei‘
fun1()
print(name)#[‘lucy‘, ‘susan‘, ‘lily‘]
print(person)#{‘name‘: ‘hanmeimei‘, ‘sex‘: ‘woman‘}

 

 

以下两种方式知道就好,不推荐使用。

局部变量修改全局变量

局部变量一般是修改不到全局变量的,如果要在函数内部修改全局变量需要加一个关键字 global,说明 你要修改的是全局变量。

name = ‘zhangshan‘

def fun1():

    global  name
    name = ‘xiaoming‘

print(name)#zhangshan
fun1()
print(name)#xiaoming

 

函数内部声明全局变量

即使没有设置这个全局变量,同样用global关键字也可以声明这个变量是全局变量。

def fun1():
    global  name
    name = ‘xiaoming‘

fun1()
print(name)#xiaoming

 但是不推荐这个方法。也不推荐在函数内部修改全局变量。

 

以上是关于python作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

JS 作用域及作用域链

作用域是什么?

JavaScript 作用域 与 作用域链

Python名称绑定和作用域的关系??

JS---闭包