默认教学计划
929人加入学习
(28人评价)
Python 基础
价格 ¥ 299.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习

Python的函数-作用域

• Python作用域基础
• 作用域法则
• global语句
• 作用域与嵌套语句
• nonlocal语句

作用域针对的是变量。在使用同一个变量名时,会出现作用域问题。

• 一个def内定义的变量名能够被def内部使用。不能在函数外部引用这个变量名。
• def内的变量名与def外的变量名并不冲突。在def内赋值的与def外赋值的相同变量名是不同的变量。
变量名有如下三种不同作用域:
1. 全局:在def外定义的变量名是全局变量
2. 本地:在def内部定义的叫做本地变量
3. 其它:嵌套def时,各自的变量也是独立的。
def myfunc1():
x = 1
def myfunc2():
x = 2

作用域法则
内嵌的模块是全局作用域
全局作用域的作用范围仅限于单个文件
每次的函数的调用都创建了一个新的本地作用域
赋值的变量名除非声明全局变量或非本地变量(Python3.x有非本地变量说法),否则均为本地变量。
所有其它的变量名都可以归纳为本地、全局或者内置。
变量名使用时,查找顺序:LEGB
L:本地变量名 - 在本地是否使用此变量名赋值过。
E:上一层结构中def或lambda的本地变量名 - 上一层是否使用此变量名赋值过。
G:全局变量名 - 在整个文件里是否对变量名赋值过。
B:内置变量名 - Python内部是否存在此变量名。
要是都找不到相应变量名,就会报错。

global语句
在函数内,想改变全局变量,可以使用global语句来定义此变量为全局变量。

工厂函数为:根据要求的对象,一个能够记住嵌套作用域的变量值的函数。这种功能,使用类可以更好的实现,但使用函数也能简单现。

 

[展开全文]

作用域:global语句:用来改变全局变量

作用域与嵌套函数:被嵌套函数的作用域也在上级函数里

工厂函数:根据要求的对象,一个能够记住

[展开全文]