局部变量,全局变量,作用域

全局变量,局部变量 ,作用域

  • 全局变量
    定义在函数外部一级代码的变量,叫全局变量
  • 局部变量
    在函数里面定义的变量,叫局部变量,只能在函数内部使用,如果全局变量跟局部变量名一样,优先使用函数局部的变量
  • 作用域
    分为:
    L (Local) 局部作用域
    E (Enclosing) 闭包函数外的函数中
    G (Global) 全局作用域
    B (Built-in) 内建作用域
    以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

在函数内部,可以引用全局变量

name = 'zk'    # 全局变量 全局作用域
def change():

    name = '小黄'     # 在函数里面是局部变量   局部作用域
    print(id(name))
    print(name)
change()
print(name,id(name))

在函数里修改全局变量

只需要在函数里声明变量前加 global 变量名

name = 'zk'
def change():
    global name
    name = '小黄'
    print(id(name))
    print(name)
change()
print(name,id(name))

在函数里修改列表数据

names = ['zk','cz','hc','th']

def set_names():


   # names = ['zk','hc','th']
    del names[1]    # 全局的元素可以修改 
    names[1] = 'xiaohan'   # 可以修改的有列表,字典等
    print(names) 
set_names()
print(names)       
# 输出
['zk', 'xiaohan', 'th']
['zk', 'xiaohan', 'th']

如果要全部修改,就要global

names = ['zk','cz','hc','th']

def set_names():

    global names
    names = [1,2,3,4]
    del names[1]
    names[1] = 'xiaohan'
    print(names)
set_names()
print(names)

输出

[1, 'xiaohan', 4]
[1, 'xiaohan', 4]
posted @ 2019-04-27 01:31  海岛cc  阅读(1623)  评论(0编辑  收藏  举报