欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python中函数作用域

程序员文章站 2022-06-08 10:46:22
...

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率,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
相关标签: tag