实例详解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中的ctime()方法使用教程
May 22 Python
python实现折半查找和归并排序算法
Apr 14 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
python奇偶行分开存储实现代码
Mar 19 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
django 将自带的数据库sqlite3改成mysql实例
Jul 09 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python利器openpyxl之操作excel表格
Apr 17 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
详细介绍Python中的偏函数
2015/04/27 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
python的socket编程入门
2018/01/29 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
Java的基础面试题附答案
2016/01/10 面试题
应聘医药销售自荐书范文
2014/02/08 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
专业见习报告范文
2014/11/03 职场文书
安全保证书
2015/01/16 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
门卫岗位职责
2015/02/09 职场文书
读书笔记怎么写
2015/07/01 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书