知识总结:

一、命名关键字参数(了解)

二、函数对象

三、函数的嵌套调用

四、函数的嵌套定义

五、名称空间

六、名称空间的查找顺序

七、作用域

 

一、命名关键字参数:

在函数定义阶段,写在*与**可变长参数之间的形参

在给命名关键字参数传值的时候,只能用关键字为其传值

在定义函数阶段,给你感觉好像z是默认值参数,放在m这个位置参数的前面,感觉有错

其实z、m都是命名关键字参数,不是默认值参数和位置参数

 

二、函数对象

函数对象是第一类对象,函数名指向的值可以当作参数传递

1.函数名可以被传递

 

2.函数名可以当作参数传递给其他函数

 

3.函数名可以被当做函数的返回值

 

4.函数名可以被当做容器类型的参数

 

三、函数的嵌套调用

1.在函数内部调用其他函数

2.可以将复杂的逻辑简单化

 

四、函数的嵌套定义

 

五、名称空间

名称空间是什么?

1.所谓名称空间就是放名字的地方

2.详细解释:存放的是变量名以及变量值随着的内存地址

3.要想访问一个变量的值,必须先去名称空间中拿到对应的名字 ,才能够访问变量的值

名称空间的分类:

1.内置名称空间:python解释器提前给你定义好的名字(已经存放到内置名称空间中了)

                len

                max

                min

2.全局名称空间:文件级别的代码

                x = 1

                if 1 ==1 :

                    y = 2

                print(y)

                while True:

                    z = 3

                x,y,z都会放到全局名称空间

                if、 for、 while 无论嵌套多少层 它们内部所创建的名字都是全局名称空间的

    3.局部名称空间:函数体内创建的名字都属于局部名称空间   

    生命周期:

        内置名称空间:只要python解释器已启动立马创建   关闭python解释器的时候内置名称空间自动销毁

        全局名称空间:只要你右键运行py文件会自动创建   py文件程序运行结束自动销毁

        局部名称空间:函数被调用的时候自动创建  函数指向结束立即销毁(动态创建动态销毁)

六、名称空间的查找顺序

名字的查找 (******)

需要先确定你当前在哪(大前提)

    1.站在全局:  全局 >>> 内置

    2.站在局部:  局部 >>> 全局 >>> 内置

函数在定义阶段查找名字的顺序就已经固定了 不会因为函数的调用位置变化而改变(******)

 

七、作用域

两大类

全局作用域:

         内置名称空间、全局名称空间

局部作用域:

         局部名称空间

修改作用域:

修改的是不可变类型,不是创建对应的名称空间

关键字:  global   nonlocal

global 在局部修改全局的不可变数据类型, 如果想修改多个,逗号隔开,

nonlocal  局部修改局部, 如果想修改多个 逗号隔开

 

 

 

posted on 2019-07-10 20:47  "莫欺少年穷  阅读(179)  评论(0编辑  收藏  举报