嵌套函数
一、嵌套函数的形成环境
如果你对
javascript
比较熟悉的话,你或许知道javascript
中的函数嵌套,闭包,函数的作用域,高阶函数(下一章介绍)python
也同样是弱类型语言,也同样具备以上几大特性
二、函数的嵌套
1、定义函数嵌套
def f1(): print('我是函数1') def f2(): print('我是函数2') f2() if __name__ == "__main__": f1()
三、函数的作用域
坚持一个原则:在作用域小地方可以访问比它作用域大里面的变量,在作用域大地方不能访问比它更小作用域里面的变量
1、函数作用域的演示
age = 20 def f1(name): print('f1函数', name) def f2(): print('f2函数', name) print('f2函数', age) f2() if __name__ == "__main__": f1('哈哈') # f2()会直接报错,因为函数作用域的问题
2、解答上述函数的作用域的问题
- 在函数
f2
中要打印name
会先在本身查找,如果本身作用域中有name
就直接使用,不会继续往上查找 - 如果
f2
中还是查找不到就会继续往上查找,找到函数f1
,如果函数f1中有就用f1
中的 - 如果
f1
中还是没有就会继续查找最外面
- 在函数
3、使用关键字
global
定义全局变量def foo(): global name name = '哈哈' global f2 def f2(): print('hello') if __name__ == "__main__": foo() print(name) print(f2())