实例详解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中的strftime()方法的使用
May 22 Python
python自动zip压缩目录的方法
Jun 28 Python
python构建深度神经网络(DNN)
Mar 10 Python
python skimage 连通性区域检测方法
Jun 21 Python
python中的字符串内部换行方法
Jul 19 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
python的常见矩阵运算(小结)
Aug 07 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
python 代码运行时间获取方式详解
Sep 18 Python
python 读取、写入txt文件的示例
Sep 27 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程序员编程注意事项
2008/04/10 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php 字符串替换的方法
2012/01/10 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
PHP7 list() 函数修改
2021/03/09 PHP
jquery退出each循环的写法
2014/02/26 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python Paramiko模块的使用实际案例
2018/02/01 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
如何基于python操作excel并获取内容
2019/12/24 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
python如何停止递归
2020/09/09 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
药剂专业个人求职信范文
2014/04/29 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
员工团队活动方案
2014/08/28 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
亲属关系公证书样本
2015/01/23 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
mysql如何能有效防止删库跑路
2021/10/05 MySQL
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL