zoukankan      html  css  js  c++  java
  • 名称空间

    名称空间:
      内置 全局 局部

      内置命名空间 存放python解释器为我们提供的名字list str tuple之类的
      全局命名空间 直接在py文件中,函数外部声明的变量都是属于命名空间
      局部命名空间 在函数中声明的变量

    取值顺序:
    在局部取值的时候:
        局部空间 全局空间 内置空间
      在全局取值的时候:
        全局空间 内置空间
      从小范围到大范围逐步寻找

    
    
    加载顺序:
    1.内置空间
    2.全局空间
    3.局部空间
    作用域:就是作用范围,按照生效范围来分为全局作用域和局部作用域
    全局作用域:包含命名空间和全局命名空间 在整个文件的任何位置都可以能被引用,全局有效(遵循从上到下逐步执行)
    局部作用域:只能在局部空间,只能在局部内或者函数内部可以使用
    globals() 查看全局变量
    locals() 查看局部变量
    a = 10
    def func():
        a = 40
        b = 20
        def abc():
            print("哈哈")
            print(a, b)     # 这里使用的是局部作用域
            print(globals())    # 打印全局作用域中的内容
            print(locals())     # 打印局部作用域中的内容
        abc()
    func()
    结果:

    哈哈
    40 20
    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000000006B5A20>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/Administrator/PycharmProjects/untitled/函数复习.py', '__cached__': None, 'a': 10, 'func': <function func at 0x00000000003B1E18>}
    {'b': 20, 'a': 40

      

    修改全局变量:

    a = 10
    def func():
        def abc():
            global a #声明修改全局变量a
            a = 22  #对a进行修改
            print(a)
        abc()
    func()
    print(a)
    结果:
    22
    22

    global修改全局变量 但是只能在局部修改 在全局会报错,glabol(仅限于字符串 和 数字)

    a = 10
    def func():
        a = 22
        def abc():
            nonlocal a  #声明父类离得最近的非全局变量a
            a =66    #对a进行修改
            print(a)
        abc()
        print(a)
    func()
    print(a)
    结果:
    66
    66
    10

    nolocal修改父类离得最近的非全局的变量



  • 相关阅读:
    Python写的简陋版一对一聊天工具,全双工
    Python函数的循环调用
    Python多进程
    正则表达式
    Python-urllib学习记录
    Android学习笔记8:使用HttpClient接口实现网络通信
    Java抽象类和接口的区别(好长时间没看这种文章了)
    Android笔记:bitmap转换与处理相关工具类,Bitmap与DrawAble与byte[]与InputStream之间的转换
    first work
    Android学习笔记7:使用SQLite方式存储数据
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10387747.html
Copyright © 2011-2022 走看看