函数命名空间,函数的名字

#函数的嵌套调用和函数的嵌套定义
#命名空间:三种:内置 全局 局部
#作用域:两种:全局 局部
#作用域链:名字的使用 是从小范围到大范围的就近事件
#globals和locals方法
#小范围可以使用大范围的,但不能修改
#如果想要修改全局的:使用global关键字 —— 尽量避免
#如果想要修改最近拥有该变量的外层函数的:使用nonlocal ——不影响全局
 
 
namespace 命名空间,名称空间
局部命名空间:每一个函数都拥有自己的命名空间
全局命名空间:写在函数外面的变量名
内置命名空间:python解释器启动之后就可以使用的名字

python的解释器要运行起来
加载顺序:
先所有内置命名空间的中的名字-->然后按照顺序加载全局命名空间中的名字
局部命名空间中的名字:在调用函数的时候产生,并且随着调用的结束而消失

函数的嵌套定义
def func():
    def qqxing():
        print('我是qqxing')
    qqxing()
func()

 

作用域:一个名字可以使用的区域
全局作用域:内置名字空间和全局名字空间中的名字都属于全局作用域
局部作用域:局部名字空间中的名字属于局部作用域
局部作用域可以使用全局作用域中的变量
而全局作用域不能使用局部作用域中的变量
局部作用域中还可以嵌套更小的局部作用域
作用域链:小范围作用域可以使用大范围的变量,但作用域链是单向的,不能反向应用
n = 0
def func1():
    n = 1
    def func2():
        n = 2
        def func3():
            n = 3
            print(n)
        func3()
    func2()

func1()
def func():
    a = 10
    b = 20
    print(locals())  #保存了当前作用域中变量
    print(globals())

n = 10
m = 22
print(globals())   #保存了在全局作用域中的名字和值
func()

globals()   #保存了在全局作用域中的名字和值
locals() #中的内容会根据执行的位置来决定作用域中的内容
如果在全局执行
globals和locals打印的结果是一致的
第一类对象的概念:
函数名可以赋值
可以作为一个数据结构的元素
可以作为一个函数的参数
可以作为一个函数的返回值


转载于:https://www.cnblogs.com/jassin-du/p/7773354.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值