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

    名称空间:存放名字与值绑定关系的地方(x=1, 名称空间存放x和1的内存空间)
    内置名称空间:python解释器启动就有,python解释器内置的名字,max,len,prient
    全局名称空间:执行python文件时生效,文件级别定义的名字

    局部名称空间:函数调用时生效,调用结束失效,函数内部定义的名字

    加载顺序:内置 -- > 全局 --> 局部
    访问名字的顺序:局部 -- > 全局 --> 内置

    def f1():
    x=1
    def f2():
    x=2
    def f3():
    x=3
    print(x)
    f3()
    f2()
    f1()
    输出结果:3

    def f1():
    x=1
    def f2():
    x=2
    def f3():
    print(x)
    f3()
    f2()
    f1()
    输出结果:2

    def f1():
    x=1
    def f2():
    def f3():
    print(x)
    f3()
    f2()
    f1()
    输出结果:1

    x='gobal'
    def f1():
    def f2():
    def f3():
    print(x)
    f3()
    f2()
    f1()
    输出结果:gobal

    全局作用域(全局范围):内置名称空间与全局名称空间的名字,全局存活,全局有效globals()
    局部作用域(局部范围):局部名称空间的名字,临时存活,局部有效locals()
    x=100
    def f1():
    x=1
    print(x)
    f1()
    print(x)
    输出结果:1
    100

    打破函数层级限制来调用函数
    def outter():
    def inner():
    print('inner')
    return inner

    f = outter()
    f()
    输出结果:inner


    函数的作用域关系是在函数定义阶段就已经固定了,与调用位置无关


    x=1
    def outter():
    def inner():
    print('inner',x)
    return inner

    f = outter()
    # f()
    x=111111111111111111111111111111111111
    def bar():
    x=3
    f()

    bar()


  • 相关阅读:
    省选测试42
    省选测试41
    省选测试40
    省选测试39
    python海龟画图生成星星
    Python-列表简介
    Linux系统中设置默认的Java版本
    虚拟机无线网卡桥接失败
    pycharm设置启动图标
    禁用vscode硬件加速
  • 原文地址:https://www.cnblogs.com/keqing1108/p/13481106.html
Copyright © 2011-2022 走看看