zoukankan      html  css  js  c++  java
  • python之命名空间与作用域

    一、命名空间与作用域

        在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联。但是,如果存在名称解析协议,则多个命名空间可以一起工作来解析名称。也就是说,如果有多个命名空间(总是有的),那么可以定义搜索的顺序,依次在不同的命名空间里来查找某个名称(或确认其不存在于任何认可的命名空间)。在python中,将这一过程定义为作用域。

      1.命名空间包含:

        内置命名空间:

            在文件中函数声明外的的变量都属于命名空间

        全局命名空间:

            函数声明的变量存在的位置属于全局命名空间

        局部命名空间:

            局部命名空间可以是list 、tuple、str、int 等

      2.作用域

        作用域就是字面理解就是作用范围,按照生效范围可分为全局作用域与局部作用域

          全局作用域: 

              全局命名空间+内置命名空间

          局部作用域:

              局部命名空间

      

      3.globals()语句

        可以查看全局作用域中的内容

      4.locals()语句

        locals()语句可以在函数的嵌套中使用,目的是查看当前作用域中的内容

      

     1 a=10
     2 def func():
     3     a= 40
     4     b= 20
     5     def abc():
     6         print("卡洛")
     7     print(a,b)
     8     print(globals())
     9     print(locals())
    10 func()

    二、函数的嵌套

      1.函数支持嵌套可以无限嵌套

    1 a=1     
    2 def a_():
    3     global a
    4     a=1
    5     def a1_():
    6         pass
    7     a1_()
    8 a_()

    三、关键字global与nonlocal

        global表示,不再使用局部作用域的内容,而是获取全局作用域中的变量

        nonlocal 表示在局部作用中,调用父级命名空间中的变量

        

  • 相关阅读:
    编码的道与禅
    使用 C# 编写简易 ASP.NET Web 服务器
    程序员的职业素养
    NServiceBus官方文档翻译(二)NServiceBus 入门
    NServiceBus官方文档翻译(一)NServiceBus 概况
    七周七语言之使用prolog解决爱因斯坦斑马难题
    七周七语言之用Io编写领域特定语言
    七周七语言之用ruby做点什么
    利用binarySearch实现抽奖计算逻辑
    Java设计模式三
  • 原文地址:https://www.cnblogs.com/qq631243523/p/9449736.html
Copyright © 2011-2022 走看看