zoukankan      html  css  js  c++  java
  • py11_函数对象、嵌套、名称空间与作用域

    一、函数对象

    函数是一类对象的含义是函数可以被当作各种数据来进行处理

    1.引用

    2.当作参数传给另一个函数

    3.当作函数的返回值

    4.当作容器类型的元素(如:list)

     1 def pay():
     2     print("支付")
     3 def withdraw():
     4     print("取款")
     5 def transfer():
     6     print("转账")
     7 func_dic={
     8     "1":pay,
     9     "2":withdraw,
    10     "3":transfer,
    11 }
    12 while True:
    13     msg="""
    14     1 支付
    15     2 取款
    16     3 转账
    17     q 退出
    18     """
    19     print(msg)
    20     choice=input(">>>:").strip()
    21     if choice=="q":break
    22     if choice not in func_dic:
    23         print("指令不存在")
    24         continue
    25     func_dic[choice]()          # 选择指令开始执行函数
    当作容器的例子

    二、函数的嵌套

    1. 函数嵌套的定义

    def func1():
        def func2():
            print("func2")
        func2()
    func1()

    2.函数嵌套的调用

    def max2(x,y):
        if x > y :
            return x
        else:
            return y
    def max4(a,b,c,d):
        res1=max2(a,b)
        res2=max2(res1,c)
        res3=max2(res2,d)
        return res3
    print(max4(99,88,77,66))

    三、名称空间域作用域

    1. 什么是名称空间?

    名称空间是存放名字(变量名)与值(变量值)绑定关系的地方。

    2. 名称空间分成三大类

    2.1 内置名称空间

    作用:用来存放python解释器自带的名字

    生命周期:在解释器启动时生效,在解释器关闭时失效

    2.2 全局名称空间

    作用:除了内置与局部的名字外,剩下的都是全局名字

    生命周期:在文件执行时生效,在文件执行完毕时失效

    2.3 局部名称空间

    作用:用于存放函数调用期间函数体产生的名字

    生命周期:在文件执行过程中,只有调用了某个函数才会临时生效,在函数执行完毕后失效

    ⭐⭐⭐注意

    三种名称空间的加载顺序与名字查找顺序时相反的

    加载顺序:内置→全局→局部

    查找名字顺序:局部←全局←内置

    3.作用域(重点⭐⭐⭐⭐)

    作用域即产生作用的范围

    3.1分类

    全局作用域(内置名称空间与全局名称空间)

    全局有效,全局存活

    局部作用域(局部名称空间)

    局部有效,临时存活

    作用域关系:在函数定义阶段就已经固定完成了,只要调用函数就需到定义阶段去找作用域关系

    3.2 global

    3.2.1 在局部想要修改全局的可变类型,不需要借助任何声明,可以直接修改。

    3.2.2 在局部想要修改全局的不可变类型,需要借助global声明,声明成全局变量就可以直接修改了。

  • 相关阅读:
    STL中string的源码解读
    Sublime插件:Terminal
    sublime text3安装Package Control
    [转]Sublime Text操作
    python itertools模块实现排列组合
    pandas 选择某几列
    更改pandas dataframe 列的顺序
    pandas之groupby分组与pivot_table透视表
    IPython notebook快捷键(Jupyter notebook)
    人生的意义
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9165152.html
Copyright © 2011-2022 走看看