实例详解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的词法分析与语法分析
May 18 Python
python里大整数相乘相关技巧指南
Sep 12 Python
Python装饰器入门学习教程(九步学习)
Jan 28 Python
Python实现简单的四则运算计算器
Nov 02 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
python 轮询执行某函数的2种方式
May 03 Python
keras topN显示,自编写代码案例
Jul 03 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 SQL防注入代码集合
2008/04/25 PHP
PHP一些常用的正则表达式字符的一些转换
2008/07/29 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
php实现的日历程序
2015/06/18 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
python入门教程之识别验证码
2017/03/04 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
python TCP包注入方式
2020/05/05 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
环境科学专业个人求职信
2013/12/15 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
小班下学期评语
2014/05/04 职场文书
校运会口号
2014/06/18 职场文书
教师批评与自我批评
2014/10/15 职场文书
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL