要关闭python解释器可使用函数_python基础之函数进阶

1.命名空间

1.1 内置命名空间--python解释器

就是python解释器一启动就可以使用的名字,存储在内置的命名空间中.

内置的名字在启动解释器的时候被加载进内存里.如print,input,list等.然后开始读代码,再加载代码中的名字(全局变量).

1.2 全局命名空间--代码,但不是在函数中的代码

是在程序从上到下被执行过程中依次被加载到内存的.

放置了我们设置的所有变量名和函数名.

1.3 局部命名空间--函数

就是函数内部定义的变量名字.

当调用函数的时候,才会产生这个名称空间,随着函数执行的结束,这个命名空间就会消失.

总结: 依赖倒置原则.

在局部可以使用全局,内置命名空间的名字.

在全局可以使用内置空间的名字,不可以使用局部空间中的名字.

在内置命名空间中不可以使用全局,局部空间中的名字.

多个函数拥有多个独立的局部命名空间,不互相共享.

当在全局定义了内置同名的名字时,会使用全局的名字.

当自己的空间有的这个名字的时候,就使用自己的名字.如果自己没有,就直接找上一级申请,上一级没有再找上一级,一直找到内置的命名空间.如果内置的命名空间也没有,就会报错.

2.作用域

2.1 全局作用域

作用在全局,内置和全局名字空间中的名字都属于全局作用域.

可以使用globals()查看.

2.2 局部作用域

作用在局部,函数(局部名字空间中名字属于局部作用域)

可以使用locals()查看.

如果在全局执行locals()会查看全局.跟执行时z所在的位置有关.

总结:

对于不可变数据类型,在局部可以查看全局作用域的变量,但是不能直接修改.

如果要修改,需要在程序中使用global声明.这个变量在局部的所有操作对全局的变量有效.

# nolocal 只能用于局部变量,找上一层中离当前层最近一层的局部变量.

3.函数的嵌套调用

4.函数的嵌套定义

5.函数名就是内存地址

# 函数名可以赋值

# 函数名可以作为容器类型的元素

# 函数名可以作为函数的参数

6.闭包

# 嵌套函数且内部函数要调用外部函数的变量.

变量a是inner函数外部的变量,inner函数调用是闭包.

"a"字符串是内部变量,所以不是闭包.

# 在外部函数使用内部函数的调用

举例:

重点: 函数的命名空间,作用域,嵌套调用.

公众号:偷学Python.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值