全局变量与局部变量

全局变量:在程序的一开始定义的变量称为全局变量,作用域是整个程序,

顶头写的变量,本Py文件中任何时候都可以调用

局部变量:在子程序中定义的变量称为局部变量,作用域是定义该变量的子程序

当全局变量与局部变量同名时:

在定义局部变量的子程序内,局部变量起作用,在其它地方全部变量起作用

注:全局变量大写,局部变量小写

例:
name='1hf' def change(): name='蜡笔小新' print('change',name)
change()


name='1hf'

def change():
global name
name='蜡笔小新'
print('change',name)

change()
print(name)
 

输出结果时由内像外找,print(name)时输出1hf ,在局部的内部加一个 关键字global name,结果输出“蜡笔小新”

global语句:在函数内增加一个global声明,可以使函数内的X变成全局变量。global也可以允许我们修改函数之外的模块的全局变量。

# 如果函数的内容无global关键字,优先读取局部变量,只能读取全局变量,无法对全局变量进行赋值,但是对于可变对象,可以对内部元素进行操作
# 如果函数中又global关键字,变量本质上就是全局那个变量,可读取可赋值。
# 当有global关键字时:
# 有声明局部变量: NAME
='水果' def fruit(): global NAME name=('香蕉') print('我想吃',name) fruit()
# 无声明局部变量: NAME
={'水果'} def fruit(): global NAME NAME={'水果'} NAME.append('水果') print('我想吃',name) fruit() # 当没有global关键字时:
# 有声明局部变量: NAME
='水果' def fruit(): name=('香蕉') print('我想吃',name) fruit()
# 没有声明局部变量: NAME
='水果' def fruit(): NAME.append('xxoo') print('我想吃',NAME) fruit()

 

函数嵌套:

方式01:

NAME='方向direction'

def east():
    name01=''
    print(name01)
    def west():
        name02='西'
        print(name02)
        def south():
            name03=''
            print(name03)
            def north():
                name04=''
                print(name04)
            north()
        south()
    west()
east()


方式02:
name
='方向direction' def east(): name='' def west(): nonlocal name name='西' west() print(name) print(name) east() print(name)
# nonlocal ,指定上一级变量
# global,

 

posted @ 2022-03-18 14:39  山高水远weinierlai  阅读(281)  评论(0)    收藏  举报