笔记:python基础之作用域

一、定义
全局作用域:作用在全局,内置和全局命名空间中的名字都属于全局作用域,globals()→永远打印全局的名字。
局部作用域:作用在局部,函数(局部名字空间中的名字属于局部作用域),locals()→输出什么根据locals所在的位置(放全局中,也会打印全局的名字)。

二、相互关系
1.对于不可变数据类型,在局部可查看全局作用域中的变量,但是不能直接修改;
2.如果想要修改,需要在程序的一开始添加global声明,如果在一个函数内(局部)声明了一个global变量,那么这个变量在局部的操作将对全局的变量有效。

三、函数的嵌套与作用域链
1、函数的嵌套:在函数中调用之前写了的函数,就为嵌套。内部函数可以使用外部函数的变量。
2、在嵌套函数中声明全局变量(global),只能声明函数外的,函数内如有重新定义的,则不作用,这时可用nonlocal来声明一个上层局部变量(向上找的第一个向量)
3、nonlocal:只能用于局部变量,找上层中离当前函数最近一层的局部变量。声明了nonlocal的内部函数的变量修改会影响到离当前函数最近一层的局部变量。
在这里插入图片描述
注意:函数名为第一类对象(有class,object)
特征:
①函数名可以赋值,如def f():→f2=f→f2()也能执行;
②函数名可作为容器类型的元素,如列表中的元素;
③函数名可作为函数的参数,f(func)
④函数名可作为函数的返回值。

四、闭包
嵌套函数,内部函数调用外部函数的变量。
在函数外部,用函数内的嵌套函数,一般嵌套函数中不调用内部函数,而是返回内存地址,在外部调用,闭包可节省空间,里面的变量不用多次创建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值