实例详解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创建和删除目录的方法
Apr 29 Python
Django视图和URL配置详解
Jan 31 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
Django开发中的日志输出的方法
Jul 02 Python
详解Django中类视图使用装饰器的方式
Aug 12 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
Python 监测文件是否更新的方法
Jun 10 Python
pandas 层次化索引的实现方法
Jul 06 Python
python+opencv边缘提取与各函数参数解析
Mar 09 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
Python 中的函数装饰器和闭包详解
Feb 06 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基于CURL进行POST数据上传实例
2014/11/10 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
再探JavaScript作用域
2014/09/24 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
python实现彩票系统
2020/06/28 Python
Python容器类型公共方法总结
2020/08/19 Python
详解python中的异常捕获
2020/12/15 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
高校毕业生自我鉴定
2013/10/27 职场文书
大学本科毕业生的自我鉴定
2013/11/26 职场文书
期末自我鉴定
2014/01/23 职场文书
文明餐桌活动方案
2014/02/11 职场文书
考察现实表现材料
2014/05/19 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
电影雷锋观后感
2015/06/10 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
angular异步验证器防抖实例详解
2022/03/31 Javascript