实例详解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中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
详谈python http长连接客户端
Jun 12 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
python之yield和Generator深入解析
Sep 18 Python
PyCharm第一次安装及使用教程
Jan 08 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
Feb 24 Python
python对文件的操作方法汇总
Feb 28 Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 Python
python 绘制国旗的示例
Sep 27 Python
Python高并发和多线程有什么关系
Nov 14 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
你的编程语言可以这样做吗?
2006/09/07 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
Python中使用Inotify监控文件实例
2015/02/14 Python
浅谈五大Python Web框架
2017/03/20 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
python list转矩阵的实例讲解
2018/08/04 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
python 下载文件的几种方法汇总
2021/01/06 Python
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
优秀交警事迹材料
2014/01/26 职场文书
学生会主席竞聘书
2014/03/31 职场文书
学生会主席演讲稿
2014/04/25 职场文书
房产公证书格式
2015/01/26 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
单位实习介绍信
2015/05/05 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL