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

     

  • 相关阅读:
    Zookeeper ZAB 协议分析
    Docker技术快速精通指南
    Oracle闪回技术详解
    怎样打造一个分布式数据库
    使用js冒泡实现点击空白处关闭弹窗
    也谈谈我对Docker的简单理解
    Docker技术快速精通指南
    Oracle优化网上常见的5个错误观点
    使用Spring AOP实现MySQL读写分离
    RESTEASY ,从学会使用到了解原理。
  • 原文地址:https://www.cnblogs.com/MaDon/p/12084057.html
Copyright © 2011-2022 走看看