python中函数作用域

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率,Python提供了许多内建函数,比如print()。但也可以自己创建函数,这被叫做用户自定义函数。

定义一个函数

我们可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,可以通过另一个函数调用执行,也可以直接从Python提示符执行。

什么是函数作用域

函数作用域就好比如自变量的定义域,每个函数都拥有自己的独立内存空间,有全局变量,局部变量,
全局变量就是在自定义一个函数时,变量可以被公共使用
局部变量就是定义在函数自身的变量,仅仅可被自己使用
但是有时候一个函数不仅仅要访问全局变量,还可能需要进行修改,这个时候就需要去声明全局变量,使用关键字global,语法格式,global 变量,更多的时候,一个函数可能会内嵌其它函数,这个时候就引入了局部变量,内嵌函数需要访问并且修改外层函数的变量,使用关键字nonlocal,语法格式,nonlocal 变量
闭包的概念:闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况下称为闭包,闭包不是某种函数类型,和递归的概念类似,就是种特殊的函数,调用闭包可以得到外层函数的局部变量,是函数内部和外部沟通的桥梁

以下就以简单示例

var = 99
def scope():
    global var              #全局变量,申明全局变量过后,便可对其进修修改
    va = 100
    va += 1
    print(va)
    print(var)
scope()
print(var)



var1 = '这是全局最外面的变量'
def scope():
    global var1
    print(var1)
    var2 = '这是外层函数的变量'
    var3 = 100
    #print(var4)

    def local():
        nonlocal var3           #局部变量声明
        print(f'现在在内层函数里面访问外层函数变量,{var2}')
        var3 += 1
        print(var3)
        var4 = '这是我内层函数的变量'
        print(var1 + 'test')
    return local
scope()()
输出结果
101
99
99
这是全局最外面的变量
现在在内层函数里面访问外层函数变量,这是外层函数的变量
101
这是全局最外面的变量test
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值