函数的对象

python中一切皆对象

函数对象的四大功能

引用

def f1():

print("from f1")

f1() #调用函数

print(f1)

print("*"*50)

f = f1 # 将函数名f1赋值给f

f() # f也可以调用函数

print(f)

from f1

**************************************************

from f1

函数名相当于一个变量名,既能接收函数体返回的值,也能赋值。

当做参数传给一个函数

def f1():

print("from f1")

def f2(a):

return a

f3 =f2(f1)

f3()

print(f3)

from f1

可以当做函数的返回值

def f1():

print("from f1")

def f2():

return f1

f3 =f2()

f3()

print(f3)

from f1

可以当做容器类型的元素

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函数的对象、函数嵌套、名称空间和作用域...相关推荐

  1. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

  2. python中ifelifelse用在什么结构_详解Python if-elif-else知识点

    有的时候,一个 if - else - 还不够用.比如,根据年龄的划分:条件1:18岁或以上:adult 条件2:6岁或以上:teenager 条件3:6岁以下:kid Python if-elif- ...

  3. python中__init__后面加特殊符号_详解Python中的__new__、__init__、__call__三个特殊方法...

    __new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是sel ...

  4. python中字典和json的区别_详解python中的json和字典dict

    定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式 ...

  5. python中用于循环结构的关键字_详解Python的循环结构知识点

    循环结构的应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令.当然你可能已经注意 ...

  6. python中字典是几维数据_详解Python字典数据类型

    字典的定义 dictionary(字典)是除列表以外 Python之中最灵活的数据类型. 字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息. 和列表的区别:列表是有序的对象集合,字典是 ...

  7. Python中的list/tuple/dict/set数据类型详解

    Python中的list/tuple/dict/set数据类型详解 Python内部内置了一些数据类型与结构,可以方便在编程时候的使用. list List存储一系列的有序集合,并且元素内容可变(可更 ...

  8. 站长在线Python精讲:在Python中格式化字符串的两种方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...

  9. 站长在线Python精讲:在Python中匹配字符串的3个方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中匹配字符串的3个方法详解>.本知识点主要内容有:使用match()方法进行匹配.使用search()方法进行 ...

  10. python中的class怎么用_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

最新文章

  1. Android Jetpack组件之Hilt使用
  2. “懒”的妙用——浅析图片懒加载技术
  3. C语言基础:数组作为函数参数传递演示源码
  4. MySQL查询出来的不重复
  5. SQL必知必会-约束
  6. 设计模式的七大设计原则:其七:合成复用原则
  7. 计算机四级知识试卷答案,计算机四级考试试题及答案
  8. 随风潜入夜,润物细无声
  9. 闲谈 Kubernetes 的主要特性和经验分享
  10. 互联网寒冬!闭关60天学懂NDK+Flutter,专题解析
  11. DEV C++下载,百度云盘,干净
  12. IP地址的分类和规划
  13. 外卖行业现状分析_简要分析外卖运营行业的发展现状
  14. 巴勒斯坦富有_使会议富有成效
  15. 【CSS】水滴动画|水滴融合效果
  16. 无线web认证计费服务器,WEB认证原理
  17. Win10休眠后蓝牙键盘无法唤醒怎么办?
  18. EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议)
  19. 服务器的备份文件在哪里找,云服务器系统如何备份文件在哪里看
  20. zbursh2021尝新,安装包

热门文章

  1. CCF201809-4 再卖菜
  2. linux 动态库系统目录,Linux共享库.so文件的命名和动态链接
  3. oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)
  4. 如何使用RMAN duplicate搭建12C的Data Guard环境?
  5. 直播丨2020数据技术嘉年华·金融峰会暨数据库大咖讲坛(第4期)
  6. 资源放送丨《 MySQL中的索引探究 - 2020云和恩墨大讲堂》PPT视频
  7. 呐,你要的新年攻略和文章汇总
  8. Oracle 12.2新特性 | 基于权重的节点驱逐
  9. 【API进阶之路】做OCR文字识别,谁说必须要有AI工程师?
  10. KubeCon直击 | 华为云以技术布道“云边端芯”