zoukankan      html  css  js  c++  java
  • 名称空间与作用域

    一:名称空间namespacs:

    存放名字的地方,是对栈区的划分 有了名称空间之后,就可以在栈区中存放相同的名字,详细的,名称空间 分为三种

    1.1 内置名称空间

    存放的名字:存放的python解释器内置的名字

    存活周期:python解释器启动则产生,python解释器关闭则销毁

    print
    <built-in function print>
    input
    <built-in function input>

    1.2 全局名称空间

    存放的名字:只要不是函数内定义、也不是内置的,剩下的都是全局名称空间的名字 存活周期:python文件执行则产生,python文件运行完毕后销毁

    1.3 局部名称空间

    存放的名字:在调用函数时,运行函数体代码过程中产生的函数内的名字 存活周期:在调用函数时存活,函数调用完毕后则销毁

    1.4 名称空间的加载顺序 内置名称空间>全局名称空间>局部名称空间

    1.5 销毁顺序 局部名称空间>全局名空间>内置名称空间

    1.6 名字的查找优先级:当前所在的位置向上一层一层查找 内置名称空间 全局名称空间 局部名称空间

    如果当前在局部名称空间: 局部名称空间—>全局名称空间->内置名称空间

    # input=333

    def func():
        # input=444
        print(input)

    func()

    如果当前在全局名称空间 全局名称空间->内置名称空间

    input=333
    def func():
        input=444
    func()
    print(input)

    示范:名称空间的"嵌套"关系是以函数定义阶段为准,与调用位置无关

    x=1
    def func():
       print(x)


    def foo():
        x=222
        func()

    foo() # x=1

    二、作用域-》作用范围

    全局作用域:内置名称空间、全局名称空间

    1、全局存活 2、全局有效:被所有函数共享

    x=111

    def foo():
        print(x,id(x))

    def bar():
        print(x,id(x))

    foo()
    bar()

    局部作用域: 局部名称空间的名字 1、临时存活 2、局部有效:函数内有效

    def foo(x):
        def f1():
            def f2():
                print(x)
  • 相关阅读:
    序列JSON数据和四种AJAX操作方式
    jquery.validate和jquery.form.js实现表单提交
    JQuery Validate使用总结1:
    HOWTO: Include Base64 Encoded Binary Image Data (data URI scheme) in Inline Cascading Style Sheets (CSS)(转)
    SharePoint 2007 使用4.0 .Net
    动态IP解决方案
    取MS CRM表单的URL
    从Iframe或新开的窗口访问MS CRM 2011(转)
    Toggle or Hidden MS CRM Tab
    Windows 2008下修改域用户密码
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12547876.html
Copyright © 2011-2022 走看看