嵌套函数

一、嵌套函数的形成环境

如果你对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())
    

results matching ""

    No results matching ""