8月30日学习内容整理:命名空间,作用域,函数名本质,闭包
发布日期:2021-08-24 18:36:01 浏览次数:11 分类:技术文章

本文共 1367 字,大约阅读时间需要 4 分钟。

补充:

三元运算:c= a if a>b else b

     相当于:  if  a>b:

          c=a

        else:

          c=b

结构;  if条件成立的结果  if  条件  else  if条件不成立的结果

一、命名空间

(1)(按加载顺序)

1、内置命名空间:存放python内部可以直接用的功能,例如:input  print  while等,是代码运行前就创建的

2、全局命名空间:存放代码的变量和函数名,是在代码运行开始时创建的,从上到下依次加载(除函数里面的名字)

3、局部命名空间:存放函数调用时函数内部的名字,从上到下加载

(2)对变量的使用

1、局部可以用全局的变量,全局不可以用局部的变量

2、对局部来说:a) 自己有的用自己的,自己没有的用全局的

        b) 有嵌套时,自己有用自己的,自己没有的往上一级一级找,直至找到为止

二、作用域

(1)内置空间:在任意地方都可以用

(2)全局空间:在写的代码里的任意地方都可以用

(3)局部空间:在自己定义的函数里使用

范围:内置>全局>局部>局部里的局部(嵌套)

(4)作用域链的概念:

(5)global和local的用法

globals代表全局作用域,放在哪都一样,显示所有的变量

locals代表局部作用域,放在函数里只会显示当前函数的变量

(6)修改全局变量值和局部变量值:一般不常用,尤其是全局变量,不要轻易修改

global  修改全局命名空间里的变量值,也是声明全局变量 nonlocal  只修改局部命名空间里的 从内部往外部找到第一个对应的变量名
globals()locals()a = 0def demo1():    global a    a = 2    print(a)demo1()print(a)
def whl1():        a=2        def whl2():            nonlocal a            a=3            print(a)        whl2()        print(a)    whl1()    print(a)
三、函数名的本质 1、函数名本质就是个变量名,当变量用就行 (1)函数名就代表函数的内存地址,把这个内存地址取出来,就可以调用 (2)函数名可以赋值给新变量 (3)函数名可以当元素(列表、元组等容器类型) (4)函数名可以做函数的参数 (5)函数名可以当做函数的返回值,返回值就是函数的内存地址

 2、函数名是第一类对象,这个概念要知道

3、当函数名被赋予变量,元素时,都可以在新变量或者取索引后加括号来调用该函数

def whl():    a=123    print(a)print(whl)val=whlval()li=[whl]li[0]()

四、闭包

1、概念:内部函数引用了外部函数的变量而非全局变量。这个内部函数就叫闭包

闭包名._ _closure_ _   会输出闭包使用的所有外部变量(元组类型),可以当作判断是否为闭包的依据,如果没有输出则不是闭包。

转载于:https://www.cnblogs.com/wanghl1011/articles/7453237.html

转载地址:https://blog.csdn.net/weixin_33831196/article/details/93258221 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:《团队-科学计算器-项目进度》
下一篇:「陶哲軒實分析」 習題 3.5.9

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月09日 10时33分55秒