• 嵌套函数


    1:

    def func1():
    print('老王去唱歌啦!')
    def func2():
    print('老李去找老王媳妇玩了!')
    func2()
    func1() #1:函数可以无限嵌套 2:不管里面嵌套多少层但是最外边的一定要调用 否则整个嵌套函数将不会执行




    2:
    age = 22
    def func1():
    age = 73
    def func2():
    age = 84
    print(age)
    func2()
    func1()
    # 函数遵循由内而外,如果一个被嵌套的函数要打印一个变量 会先从自己的局部找 找不到才会去上级或者全局



    3:
    age = 22
    def func1():
    def func2():
    print(age)
    age = 84
    func2()
    func1() #这里在第二个局部变量中虽然‘age’最后才定义 但是由于函数是在遇见调用才执行 所以 age‘已经被读到内存中 此时打印age = 84

    4:
    age = 22
    def func1():
    print(age) #这里报错 因为只要是局部变量只会优先找任意一个局部的变量 并不会找全局的变量除非’global‘ 因为在第二个局部中有’age‘但是 因为函数执行前会大概了解哪些位置有什么,这里’python‘知道局部有变量 但不知道是什么变量 所以打印第一个’age‘提示引用局部变量
    def func2():
    print(age)
    age = 84
    func2()
    func1() #这里会报错找不到变量


    打印:
    local variable 'age' referenced before assignment
    赋值前引用的局部变量“年龄”

    5:
    age = 22
    def func1():
    global age
    def func2():
    print(age)
    func2() #这里虽然声明 ’global‘但是代码有上向下执行当’func2‘执行完才把’age‘重新赋值 所以这里age = 22
    age = 84
    func1()
    print(age)这里age = 84 因为这一步age已经被更改了



    6:
    age = 22
    def func1():
    global age #这里会优先读取变量并重新赋值’age‘所以俩打印结果都是’84‘
    def func2():
    print(age)
    age = 84
    func2()
    func1()
    print(age)
     
     
     
     
  • 相关阅读:
    工作中问题的总结1
    linux问题故障
    时间转换
    Tips
    总结
    方向
    同步&异步-阻塞&非阻塞
    IO 之 mark()、reset()
    GC日志分析
    JDK 部分工具使用方法
  • 原文地址:https://www.cnblogs.com/yuexijun/p/9995549.html
Copyright © 2020-2023  润新知