实例详解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登陆asp网站页面的实现代码
Jan 14 Python
python实现微信远程控制电脑
Feb 22 Python
对python产生随机的二维数组实例详解
Dec 13 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
python实现淘宝购物系统
Oct 25 Python
python requests模拟登陆github的实现方法
Dec 26 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
Python try except异常捕获机制原理解析
Apr 18 Python
Python接口自动化测试的实现
Aug 28 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php GD绘制24小时柱状图
2008/06/28 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
vue配置多页面的实现方法
2018/05/22 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
python用插值法绘制平滑曲线
2021/02/19 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
入团介绍人意见范文
2015/06/04 职场文书
js 实现验证码输入框示例详解
2022/09/23 Javascript