实例详解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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
python检测远程端口是否打开的方法
Mar 14 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
Apr 19 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
Python子类继承父类构造函数详解
Feb 19 Python
python制作图片缩略图
Apr 30 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
python中字符串的编码与解码详析
Dec 03 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 Python
Python标准库pathlib操作目录和文件
Nov 20 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
PHP中overload与override的区别
2017/02/13 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
python 装饰器的基本使用
2021/01/13 Python
管理信息系学生的自我评价
2014/01/11 职场文书
同事打架检讨书
2014/02/04 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
谢师宴学生致辞
2015/07/27 职场文书
PHP策略模式写法
2021/04/01 PHP
详解vue中v-for的key唯一性
2021/05/15 Vue.js
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
A22国内电台短波广播频率表
2022/05/10 无线电