python中嵌套函数的应用实例-实例详解python函数的对象、函数嵌套、名称空间和作用域...
函数的对象
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函数的对象、函数嵌套、名称空间和作用域...相关推荐
- python中heapq的库是什么_详解Python中heapq模块的用法
详解Python中heapq模块的用法 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...
- python中ifelifelse用在什么结构_详解Python if-elif-else知识点
有的时候,一个 if - else - 还不够用.比如,根据年龄的划分:条件1:18岁或以上:adult 条件2:6岁或以上:teenager 条件3:6岁以下:kid Python if-elif- ...
- python中__init__后面加特殊符号_详解Python中的__new__、__init__、__call__三个特殊方法...
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是sel ...
- python中字典和json的区别_详解python中的json和字典dict
定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式 ...
- python中用于循环结构的关键字_详解Python的循环结构知识点
循环结构的应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令.当然你可能已经注意 ...
- python中字典是几维数据_详解Python字典数据类型
字典的定义 dictionary(字典)是除列表以外 Python之中最灵活的数据类型. 字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息. 和列表的区别:列表是有序的对象集合,字典是 ...
- Python中的list/tuple/dict/set数据类型详解
Python中的list/tuple/dict/set数据类型详解 Python内部内置了一些数据类型与结构,可以方便在编程时候的使用. list List存储一系列的有序集合,并且元素内容可变(可更 ...
- 站长在线Python精讲:在Python中格式化字符串的两种方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...
- 站长在线Python精讲:在Python中匹配字符串的3个方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中匹配字符串的3个方法详解>.本知识点主要内容有:使用match()方法进行匹配.使用search()方法进行 ...
- python中的class怎么用_对python 中class与变量的使用方法详解
python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...
最新文章
- Android Jetpack组件之Hilt使用
- “懒”的妙用——浅析图片懒加载技术
- C语言基础:数组作为函数参数传递演示源码
- MySQL查询出来的不重复
- SQL必知必会-约束
- 设计模式的七大设计原则:其七:合成复用原则
- 计算机四级知识试卷答案,计算机四级考试试题及答案
- 随风潜入夜,润物细无声
- 闲谈 Kubernetes 的主要特性和经验分享
- 互联网寒冬!闭关60天学懂NDK+Flutter,专题解析
- DEV C++下载,百度云盘,干净
- IP地址的分类和规划
- 外卖行业现状分析_简要分析外卖运营行业的发展现状
- 巴勒斯坦富有_使会议富有成效
- 【CSS】水滴动画|水滴融合效果
- 无线web认证计费服务器,WEB认证原理
- Win10休眠后蓝牙键盘无法唤醒怎么办?
- EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议)
- 服务器的备份文件在哪里找,云服务器系统如何备份文件在哪里看
- zbursh2021尝新,安装包
热门文章
- CCF201809-4 再卖菜
- linux 动态库系统目录,Linux共享库.so文件的命名和动态链接
- oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)
- 如何使用RMAN duplicate搭建12C的Data Guard环境?
- 直播丨2020数据技术嘉年华·金融峰会暨数据库大咖讲坛(第4期)
- 资源放送丨《 MySQL中的索引探究 - 2020云和恩墨大讲堂》PPT视频
- 呐,你要的新年攻略和文章汇总
- Oracle 12.2新特性 | 基于权重的节点驱逐
- 【API进阶之路】做OCR文字识别,谁说必须要有AI工程师?
- KubeCon直击 | 华为云以技术布道“云边端芯”