python 全局变量、局部变量、自由变量的使用

全局变量、局部变量、自由变量的作用域不同,可以使用不同的关键字定义:
全局变量:在整个 py 文件中有效;可以使用“global”关键字定义。
局部变量:一般出现在“def”定义的函数中,在整个函数块中有效;在函数中进行赋值操作时会自动定义。
自由变量:是一个术语,指未在局部作用域中绑定的变量,一般用来引用局部变量的值;可以使用“nonlocal”关键字定义。(注:通常只有在定义高阶函数函数时才会使用自由变量)

执行以下代码,并对比输出可知:
在函数中修改全局变量的值,全局变量的值在整个py文件中都会发生变化;
在函数中修改局部变量的值,局部变量的值仅在当前函数块中发生变化;
在函数中修改自由变量的值,自由变量所引用的局部变量的值也会发生变化。

var_global = 'global var'

def f1():

    global var_global  # 声明了全局变量
    print(f'f1中初始var_global值: {var_global}')
    var_global = 'modified global var'
    print(f'f1中修改后var_global:值 {var_global}')  # 在函数块内,var_global的值已改

    var_local = 'local var'  # 定义了一个局部变量
    print(f'f1中初始var_local值: {var_local}')

    def f2():
        nonlocal var_local  # 声明自由变量
        var_local = 'f2 modified local var'
        print(f'f2中修改后var_local值: {var_local}')  # 函数f2中,var_local的值已改

    f2()
    print(f'f1中var_local值: {var_local}')  # 函数f1中,var_local的值已改
    # 说明在f2中var_local的作用域得到延申,访问了f1中定义的var_local变量

    def f3():
        # 此时var_local为f3()中的局部变量,与f1()中定义的var_local变量无关
        var_local = 'f3 modified local var'
        print(f'f3中修改后var_local值: {var_local}')  # 函数f3中,var_local的值已改

    f3()
    print(f'f1中var_local值: {var_local}')  # 函数f1中,var_local的值未改
    # 说明f3中的var_local仅为f3中定义的局部变量

f1()
print(f'py文件中var_global值: {var_global}')  # 在函数块外,全局变量的值也已改

代码运行结果:

f1中初始var_global值: global var
f1中修改后var_global:值 modified global var
f1中初始var_local值: local var
f2中修改后var_local值: f2 modified local var
f1中var_local值: f2 modified local var
f3中修改后var_local值: f3 modified local var
f1中var_local值: f2 modified local var
py文件中var_global值: modified global var
  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值