实例详解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中Collection的使用小技巧
Aug 18 Python
python difflib模块示例讲解
Sep 13 Python
python正则表达式re之compile函数解析
Oct 25 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
python增加图像对比度的方法
Jul 12 Python
QML使用Python的函数过程解析
Sep 26 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
pytorch 查看cuda 版本方式
Jun 23 Python
超详细Python解释器新手安装教程
May 10 Python
Django实现聊天机器人
May 31 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中最容易忘记的一些知识点总结
2013/04/28 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
php图片裁剪函数
2018/10/31 PHP
jquery中$.post()方法的简单实例
2014/02/04 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python解决字符串倒序输出的问题
2018/06/25 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
Django中的用户身份验证示例详解
2019/08/07 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
电子商务专业个人的自我评价
2013/11/19 职场文书
德语专业求职信
2014/03/12 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
2014年质量工作总结
2014/11/22 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
Python的property属性详细讲解
2022/04/11 Python