zoukankan      html  css  js  c++  java
  • 函数变量的生命周期

    #!/usr/bin/env python
    #coding:utf-8
    #@Author:Andy
    # Date: 2017/6/14
    
    # x = 1
    # def foo():
    # 	x =  10000
    # 	print(x)
    #
    # foo()
    # print(x)
    

    运行上面的代码会先后打印出:10000, 1
    执行foo函数后,x=10000的生命周期在foo函数内部,当此函数执行完后即消失,
    接着执行print(x), 此时内部的x=10000已经销毁,只有全局变量x=1,所以打印1

    x=1
    def f():
    	x = 2 # 生命周期在f
    	def f2():
    		x = 3 # 生命周期在f2
    		def f3():
    			nonlocal x # 会延伸到f2,限f2内部
    			print(x)
    			x = 4
    		f3()
    	f2()
    
    f()
    

     此咱情况下最后打印的结果为3。
    如果没有nonlocal x ,将会报错,因为nonlocal使得f3内部的x变量可以突破当前局部变量的限制
    向上延伸到f2函数内部,如果f2内容仍没有找到x,那将继续到f内部,但仍然无法突破局部变量的限制,
    无法延伸到全局变量的范围。但不能在nonlocal前面再定义一次x,那样将报错。

     

     

  • 相关阅读:
    react: redux-devTools
    react: menuService
    react: navigator
    react style: 二级菜单
    spark复习笔记(5):API分析
    spark复习笔记(4):spark脚本分析
    maven 打包Scala代码到jar包
    spark复习笔记(3)
    mongoDB学习笔记(2)
    sparkStreaming复习笔记(1)
  • 原文地址:https://www.cnblogs.com/Andy963/p/7008873.html
Copyright © 2011-2022 走看看