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