实例详解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简单进程锁代码实例
Apr 27 Python
介绍Python中的文档测试模块
Apr 28 Python
python更新列表的方法
Jul 28 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
bat和python批量重命名文件的实现代码
May 19 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
Jun 29 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
opencv 图像加法与图像融合的实现代码
Jul 08 Python
Python获取android设备cpu和内存占用情况
Nov 15 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
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
JS实现留言板功能
2017/06/17 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
Python全局变量操作详解
2015/04/14 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
python退出循环的方法
2020/06/18 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
解决python运行效率不高的问题
2020/07/20 Python
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
银行实习生的自我评价
2013/12/09 职场文书
毕业生自荐信格式
2014/03/07 职场文书
期末评语大全
2014/05/04 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
护林员个人总结
2015/03/04 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript