• Python命名空间和作用域


    Python命名空间和作用域

    总结

    emmm,这一块讲了2个内容,一个是命名空间,一个是作用域。一个一个说吧

    命名空间

    A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries

    上边这段是官方文档定义的,简单来说就是名字到对象的映射,我们知道,python的一切都是对象,你所定义的变量名其实只是个引用。这样就好理解了。python的命名空间由python数据结构字典实现。
    python的命名空间细分的话有三种。如图所示。

    这一部分没什么好说的,重要的是理解其概念

    作用域

    A scope is a textual region of a Python program where a namespace is directly accessible. "Directly accessible" here means that an unqualified reference to a name attempts to find the name in the namespace.

    由官方文档可以看出,作用域就是可以直接访问的区域。就是全局到局部。这里举个代码例子就行了。

    #demo.py
    
    global_var='haha'   #定义全局变量
    
    def tool():
        local_var='local'   #局部变量
        print(local_var)    #访问局部变量,可以访问
    
    print(global_var)   #访问全局变量,可以访问
    print(local_var)    #访问局部变量,找不到,无法访问
    

    惊喜知识

    这一部分的惊喜知识是跟作用域有关的。学到了2个关键字globalnonlocal

    global_var='haha'   #定义全局变量
    
    def tool():
        global_var='22'
        print(global_var)
    
    print(global_var)   #访问全局变量,可以访问
    tool()
    

    这段代码输出了2个global_var。输出结果是不一样的。tool函数里在局部修改了global_var的值,并不影响全局。此时如果你想影响全局,你就需要用到关键字global.

    global_var='haha'   #定义全局变量
    
    def tool():
        global global_var
        global_var='22'
        print(global_var)
    
    tool()
    print(global_var) 
    

    这样就好了。
    nonlocal作用类似,用来修改嵌套作用域的。

    def tool():
        var=1
        def inner():
            nonlocal var
            var=2
            print(var)
        inner()
        print(var)
    tool()
  • 相关阅读:
    PHP xml_get_current_column_number() 函数
    PHP xml_get_current_byte_index() 函数
    PHP xml_error_string() 函数
    PHP utf8_encode() 函数
    PHP utf8_decode() 函数
    MySQL 资料库概论与MySQL 安装
    SEO之网站关键词的优化 :首页,内页关键字,长尾关键字
    前端开发chrome console的使用 :评估表达式 – Break易站
    chrome console的使用 : 异常和错误的处理 – Break易站
    SEO的基本概念 和 提交SITEMAP到搜索引擎
  • 原文地址:https://www.cnblogs.com/funmary/p/13425544.html
Copyright © 2020-2023  润新知