一.  函数内嵌 闭包

  • 在python中,函数可以作为返回值, 可以给变量赋值.
  • 在python中, 内置函数必须被显示的调用, 否则不会执行.
    #!/usr/bin/env python
    #-*- coding: utf-8 -*- def foo():
    m = 4
    def bar():
    n = 3
    d = m + n
    return d
    return bar test = foo()
    print test() #结果:
    7
    #!/usr/bin/env python
    #-*- coding: utf-8 -*- def foo():
    m = 4
    def bar():
    n = 3
    m = m + n
    return m
    return bar test = foo()
    print test() #结果
    UnboundLocalError: local variable 'm' referenced before assignment 在python2中 把m换成list就不会出现这样的错误, 在python3中,nonlocal 可以解决这个问题, 没搞清楚其中的原理

二、嵌套函数和它的变种(装饰器)

以下两端代码,作用是相同的,

def test(n):
return n def test_pro(func):
y = 100
def warpper(x):
return func(y) * x return warpper f = test_pro(test)
print f(4) #结果
400

将上边代码改写:

def test_pro(func):
y = 100
def warpper(x):
return func(y) * x return warpper @test_pro
def test(n):
return n print test(4) #结果
400

python 内嵌函数, 闭包, 函数装饰器的更多相关文章

  1. Python之面向对象:闭包和装饰器

    一.闭包 1. 如果一个函数定义在另一个函数的作用域内,并且引用了外层函数的变量,则该函数称为闭包. def outter(): name='python' def inner(): print na ...

  2. day20 函数闭包与装饰器

    装饰器:本质就是函数,功能是为其他函数添加新功能 原则: 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器=高阶函数+ ...

  3. Python之命名空间、闭包、装饰器

    一.命名空间 1. 命名空间 命名空间是一个字典,key是变量名(包括函数.模块.变量等),value是变量的值. 2. 命名空间的种类和查找顺序 - 局部命名空间:当前函数 - 全局命名空间:当前模 ...

  4. Python 变量作用域,闭包和装饰器

    from dis import dis b = 6 def f1(a): print(a)print(b) b = 9 f1(3) print(dis(f1)) # dis模块可以查看python函数 ...

  5. Fluent_Python_Part3函数即对象,07-closure-decoration,闭包与装饰器

    第7章 函数装饰器和闭包 装饰器用于在源码中"标记"函数,动态地增强函数的行为. 了解装饰器前提是理解闭包. 闭包除了在装饰器中有用以外,还是回调式编程和函数式编程风格的基础. 1 ...

  6. Python之路【第五篇】: 函数、闭包、装饰器、迭代器、生成器

    目录 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之可迭代对象 函数之迭代器 函数之生成器 面向过程的程序设计思想 一.函数进阶之函数对象 1. 函数对象 秉承着 ...

  7. python基础语法7 闭包函数与装饰器

    闭包函数: 1.闭包函数必须在函数内部定义 2.闭包函数可以引用外层函数的名字 闭包函数是 函数嵌套.函数对象.名称空间与作用域 结合体. # 直接传参 def func(x): print(x) f ...

  8. 一文搞懂Python函数(匿名函数、嵌套函数、闭包、装饰器)!

    Python函数定义.匿名函数.嵌套函数.闭包.装饰器 目录 Python函数定义.匿名函数.嵌套函数.闭包.装饰器 函数核心理解 1. 函数定义 2. 嵌套函数 2.1 作用 2.2 函数变量作用域 ...

  9. 13、python中的函数(闭包与装饰器)

    一.嵌套函数 函数的内部又再定义另一个函数,这个函数就叫嵌套函数,里面含函数就叫内部函数. 示例: 二.返回函数 函数可以接收函数对象作为参数,同理函数也能返回一个函数对象作为返回值. 示例: 返回函 ...

  10. python函数知识七 闭包、装饰器一(入门)、装饰器二(进阶)

    21.闭包 闭包:在嵌套函数内,使用非全局变量(且不使用本层变量) 闭包的作用:1.保证数据的安全性(纯洁度).2.装饰器使用 .__closure__判断是否是闭包 def func(): a = ...

随机推荐

  1. WordPress 4.3 Beta 1 全新发布,改进了后台功能和用户体验

    WordPress 4.3 Beta 1 发布,此版本是开发版本,不建议在生产环境使用.如果要测试 WordPress 4.3 Beta 版本,可以使用 WordPress Beta Tester 插 ...

  2. Redis系统学习 二、数据结构

    一.字符串     1.在Redis里,字符串是最基本的数据结构.当你在思索着关键字-值对时,你就是在死锁着字符串数据结构.不要被名字给搞混了. 常见实例: set users:leto " ...

  3. 构建RESTful风格的WCF服务

    构建RESTful风格的WCF服务 RESTful Wcf是一种基于Http协议的服务架构风格. 相较 WCF.WebService 使用 SOAP.WSDL.WS-* 而言,几乎所有的语言和网络平台 ...

  4. Apache遇到的问题:APR not found

    #./configure --prefix……检查编辑环境时出现: checking for APR... no configure: error: APR not found .  Please r ...

  5. DNS解析详细过程

    英文:domain name system. 中文:域名系统. 解析过程: 第一次请求站点(例:http://www.baidu.com),先在当前浏览器路径下寻找有没有缓存对应的解析结果,如果有的话 ...

  6. IronPython .NET Integration官方文档翻译笔记

    http://ironpython.net/documentation/dotnet/这是原文地址 以下笔记仅记录阅读过程中我认为有必要记录的内容,大多数都是依赖翻译软件的机翻,配合个人对代码的理解写 ...

  7. Volt 模块引擎与phalcon框架组合使用指南

    ---- 近期工作中web页面使用由C语言编写的VOLT模板引擎,相比之前由js动态加载页面速度更快,更利于百度数据的抓取,现根据文档整理一下使用思路 (Volt是一个超快速和设计者友好的模板语言,C ...

  8. HTML target 属性

    定义和用法 <a> 标签的 target 属性规定在何处打开链接文档. 如果在一个 <a> 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性 ...

  9. 数据意识崛起,从企业应用看BI软件的未来发展

    前阵子,和一群企业CIO聊天,希望从甲方角度看看对BI产品的看法.在问及一些成熟企业为何不上BI项目时,大家纷纷表示目前还处于观望状态. 提及BI,大家都觉得有些飘忽,和大数据一样,听着高大上,能真正 ...

  10. java基础练习 7

    public class Seventh { public static void main(String[] args){ double x=0,a=1,b=9; while(x!=a*a-100& ...