zoukankan      html  css  js  c++  java
  • Python3——嵌套函数

     顾名思义,就是函数内还有函数

    #嵌套函数
    def func1():
        print('func1')
    
        def func2():
            print('func2')
    
    func1()
    

     结果:

    func1

    为什么函数func2没有被执行?

    任意一个函数定义完成之后,如果没有人通过名字调用它,就永远不会执行

    那如何调用func2?

    def func1():
        print('func1')
    
        def func2():
            print('func2')
        
        func2()
    
    func1()
    

     结果:

    func1
    func2

    回顾全局变量和局部变量:

    age = 18  #曾祖父
    
    def func1():  #爷爷
        age = 20
        print(age)
    
        def func2():  #爸爸
            age = 25
            print(age)
    
            def func3():  #儿子
                print(age)
            func3()
    
        func2()
    
    func1()

     结果:

    20
    25
    25

    函数引用变量的时候是从该函数内部一层一层的向外找

    还有一点值得注意的是,要遵循代码的执行顺序,想要被调用的变量不能在被执行函数的下面

    age = 18
    
    #正确:
    def func1():
        # age = 20   放在上面
    
        def func2():
            print(age)
    
        age = 20    #放在下面,其实都是放在func2的上面
        func2()
    
    func1()
    
    #错误:
    def func1():
    
        def func2():
            print(age)
    
        func2()
        age = 20   #不能放在引用该变量的函数下
    
    func1()
    

     结果:

    #正确:
    20
    
    #错误:
    NameError: free variable 'age' referenced before assignment in enclosing scope
  • 相关阅读:
    序列化和反序列化
    抽象类与接口
    为了忘却的纪念
    gmail和hotmail也有企业邮局
    tag's tag
    在互联网上裸奔
    音乐网站,可以自己弹琴,歌谱整理
    今天看了ning的介绍,很有意思
    昨天服务器出现问题,解决过程如下所述
    google Trends
  • 原文地址:https://www.cnblogs.com/everzin/p/8594707.html
Copyright © 2011-2022 走看看