zoukankan      html  css  js  c++  java
  • python基础之名称空间和作用域、函数嵌套

    一、名称空间

    1、定义:存放名字与值的绑定关系

    2、名称空间分为:内置名称空间、全局名称空间、局部名称空间

    内置名称空间:python解释器自带的名字,python解释器启动就会生成

    全局名称空间:文件级别定义的名字都会存放与全局名称空间,执行python文件时会产生

    局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效,函数调用结束则失效

    3、加载的顺序:三者的加载顺序:内置名称空间->全局名称空间->局部名称空间

    4、取值的顺序:局部名称空间->全局名称空间->内置名称空间7

    # # max=10
    # def func(): #x=1
    #     # max=20
    #     print(max)
    #
    #
    # func()
    
    
    
    # max=10
    #
    # def func(): #x=1
    #     max=20
    #     # print(max)
    # func()
    #
    #
    # print(max)
    #
    
    
    # # x=0
    # def f1():
    #     # x=1
    #     def f2():
    #         # x=2
    #         def f3():
    #             # x=3
    #             print(x)
    #         f3()
    #     f2()
    #
    # f1()

    二、作用域

    1、范围:

    全局作用域:内置名称空间与全局名称空间的名字属于全局范围,在整个文件的任意位置都能被引用,全局有效

    局部作用域:局部名称空间的名字属于局部范围,只在函数内部可以被引用,局部有效

    # x=1
    # def foo():
    #     def f2():
    #         print(x)
    #     f2()
    # def bar():
    #     print(x)
    #
    # foo()
    # bar()
    
    
    # def f1():
    #     x=1
    #     def f2(): #f2=value
    #         # x=2
    #         print(x)
    #     f2()
    # f1()
    
    
    x=1
    def func():
        x=2
        def f1():pass
        # print(dir(globals()['__builtins__'])) #全局作用域name
        # print(locals()) #局部作用域name
    
    func()
    
    print(globals() is locals())

    2、作用顺序是:局部作用域》》》》》》全局作用域

    三、函数嵌套

    1、函数的嵌套定义

    def f1():
        def f2():
            def f3():
                print('from f3')
            print('from f2')
            f3()
        print('from f1')
        f2()
    # print(f1)
    f1()

    2、函数的嵌套调用

    def max2(x,y):
         if x > y:
            return x
         else:
            return y
    
    def max4(a,b,c,d):
        res1=max2(a,b) #23
        res2=max2(res1,c) #23
        res3=max2(res2,d) #31
        return res3
    print(max4(11,23,-7,31))
  • 相关阅读:
    Flink--Window apply
    Flink--time-window 的高级用法
    Flink的Windows
    Flink的流处理--KeyBy
    Flink的分布式缓存
    Flink的广播变量
    Flink--本地执行和集群执行
    Flink-- 数据输出Data Sinks
    存储管理-页式管理
    存储管理-覆盖技术和交换技术
  • 原文地址:https://www.cnblogs.com/fenglinglf/p/7003115.html
Copyright © 2011-2022 走看看