实例详解python函数的对象、函数嵌套、名称空间和作用域


Posted in Python onMay 31, 2019

函数的对象

python中一切皆对象

函数对象的四大功能

引用

def f1():
  print('from f1')
f1() #调用函数
print(f1)
print('*'*50)
f = f1 # 将函数名f1赋值给f
f() # f也可以调用函数
print(f)
from f1
<function f1 at 0x000001FB05534620>
**************************************************
from f1
<function f1 at 0x000001FB05534620>

函数名相当于一个变量名,既能接收函数体返回的值,也能赋值。

当做参数传给一个函数

def f1():
  print('from f1')

def f2(a):
  return a
f3 =f2(f1)
f3()
print(f3)

from f1
<function f1 at 0x00000275FA914620>

可以当做函数的返回值

def f1():
  print('from f1')
def f2():
  return f1
f3 =f2()
f3()
print(f3)
from f1
<function f1 at 0x0000014931304620>

可以当做容器类型的元素

def f1():
  print('from f1')

l = [1,2,3,f1]
l[3]()

from f1

函数的嵌套

函数的嵌套定义

函数内部定义的函数,无法在函数外部使用内部定义的函数。

函数的嵌套调用

from math import pi
def circle(r,action):
  if action == 'p':
    def perimeter():
      return 2 * pi * r
    res = perimeter()
  elif action == 'a':

    def area():
      return pi * r**2
    res = area()
  else:
    return ' '
  return res
result = circle(2,'p')
print(result)
12.566370614359172

名称空间与作用域

名称空间

内存存储变量名与变量间的绑定关系的空间(存放变量名的空间),这个空间被称为名称空间。

内置名称空间

内置名称空间:存放python解释器自带的名字,如:int、float、len等

len()
int()

生命周期:在解释器启动时生效,在解释器关闭时失效。

全局名称空间

全局名称空间:除了内置和局部的名字之外,其余都存放在全局名称空间,如:x、func、l、z

生命周期:在文件执行时生效,在文件执行结束后失效。

局部名称空间

局部名称空间:用于存放函数调用期间函数体产生的名字。

def f1():
  x = 1
  def f2(): # f2就是局部名称空间
    pass
  f2()

生命周期:在文件执行函数调用期间时生效,在函数执行结束后失效。

加载顺序 (考试必考)

内置名称空间—>全局名称空间—>局部名称空间

查找顺序 (考试必考)

从当前名称空间开始查找,然后逐步往上,如果当前为局部,则顺序为局部—>全局—>内置

作用域

作用域:作用的区域

作用域关系在函数定义阶段就已经确定好了

函数与函数之间可能会有相同名字的变量,但是这个两个变量毫无关系,作用域不同

全局作用域

适用于全局+内置,即全局可以修改内置的,内置也可以修改全局的

局部作用域

只适用于局部范围,在局部定义的名字只能在局部获取

x =100
def f1():
  x =1
  print(x) # 定义阶段
f1()

global 局部修改全局 (了解,面试常用)

x =100
def f1():
  global x
  x =1
  # print(x)
f1()
print(x)

nonlocal 把局部改成外部

xxxxxxxxxx9 1  def f1():2  x =13  def f2():4    nonlocal x 5    x =36  f2()7  print(x)8f1()93pythono

总结

以上所述是小编给大家介绍的python函数的对象、函数嵌套、名称空间和作用域,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
python中set常用操作汇总
Jun 30 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
python 对key为时间的dict排序方法
Oct 17 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
Python全栈之列表数据类型详解
Oct 01 Python
Python实现FLV视频拼接功能
Jan 21 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
Python多线程正确用法实例解析
May 30 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
python爬取某网站原图作为壁纸
Jun 02 Python
Python可变和不可变、类的私有属性实例分析
May 31 #Python
python实现批量视频分帧、保存视频帧
May 31 #Python
Python内置random模块生成随机数的方法
May 31 #Python
Python模块、包(Package)概念与用法分析
May 31 #Python
python多线程下信号处理程序示例
May 31 #Python
浅谈Python大神都是这样处理XML文件的
May 31 #Python
Python2.7实现多进程下开发多线程示例
May 31 #Python
You might like
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
python变量不能以数字打头详解
2016/07/06 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
django rest framework 自定义返回方式
2020/07/12 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
白酒市场营销方案
2014/02/25 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
话题作文之诚信
2019/11/28 职场文书
Pygame Time时间控制的具体使用详解
2021/11/17 Python