实例详解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 04 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
Django中反向生成models.py的实例讲解
May 30 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
浅谈django orm 优化
Aug 18 Python
详解Python字符串切片
May 20 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
Django 拆分model和view的实现方法
Aug 16 Python
python实现LRU热点缓存及原理
Oct 29 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 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
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
Python中的类学习笔记
2014/09/23 Python
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
python3简单实现微信爬虫
2015/04/09 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python中static相关知识小结
2018/01/02 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
3分钟学会一个Python小技巧
2018/11/23 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
公关关系专员的自我评价分享
2013/11/20 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
承诺书怎么写
2014/03/26 职场文书
情况说明书格式范文
2014/05/06 职场文书
团组织推荐意见
2015/06/05 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python