zoukankan      html  css  js  c++  java
  • 函数作用域global和nonlocal

    函数作用域 自己有用自己的 自己没有用上一层 一层一层往上找:

    num = 0

    def one():

      print(num) #自己没有且没有上一层了用全局 0

      num = 1

      def two():

        num =2

        def three():

          print(num)#自己没有往上找 2

        three()

        print(num)#自己有用自己的 2

      two()

      print(num)#1自己有用自己的

    one()

    print(num) #用自己的

    global:定义一个全局变量

    global定义一个全局变量 自己有用自己的 自己没有用上一层的 global num 代替函数外的num 成为全局变量 

    num = 0

    def one():

      print(num) #自己没有且没有上一层了用全局 0 这时还没有 global这回事

      def two():

        global num =2

        def three():

          print(num)#自己没有往上找 2

        three()

        print(num)#自己有用自己的 2

      two()

      print(num)#2 现在自己没有也没有上一层了 就用全局变量 有global global num成为此函数中的全局变量了

    one()

    print(num) #2 此时global num num=2 取代 num = 0 成为全局变量

    nonlocal:只能影响到上一层 

    num =0
    def one():

    print(num)#这个时候没有nonlocal 0

    def two():
    num = 2
    print(num)# 这个时候没有 nonlocal 2
    def three():
    nonlocal num
    num = 3
    print(num)#用自己的 3
    three()
    print(num)#有了global 3
    two()
    print(num)#nonlocal 只能影响他的上一层 这个是他的上二层了 自己没有用上一层 上一层没有找全局 0
    one()
    print(num) 0

     

  • 相关阅读:
    复杂对象创建终结者(Builder Pattern)
    创建型模式特立独行的两位大侠
    工厂模式(Factory)
    MAC 相关
    iOS 地图相关
    iOS字体相关
    App跳转系统设置界面
    Mac 模拟慢速网络
    Thread1:EXC_BAD_ACCESS 错误
    iOS 统计App 的代码总行数
  • 原文地址:https://www.cnblogs.com/MaDon/p/12084057.html
Copyright © 2011-2022 走看看