【人生苦短 PYTHON当歌】——PYTHON函数式编程02

   python作用域、局部与全局变量

   首先明白Python能够改变作用域的代码段是def class lamda if/elif/else  try/except/finally for/while

变量的搜索路径是:局部变量-》全局变量

不妨试试下面代码:

x=100
def main():
    x+=1
    print(x)
main()

当运行上面代码的时候会出错,为什么呢,就需要理解作用域,局部变量和全局变量的区别了

x=100
def main():
    global x
    x+=1
    print(x)
main()
print(x)  #全局变量已被改变
运行结果为:
101
101

  因为我们添加了global x,所以main()函数是能访问到全局变量x,

python闭包

到这里我们已经基本了解了Python作用域的规则

我们来写一个闭包

#python 3.5
def inc():  #inc是外围函数
    x=0
    def inner():   #inner 是嵌套函数
        nonlocal x
        x+=1
        print(x)
    return inner
inc1=inc()
inc2=inc()

inc1()
inc1()
inc1()
inc2()
运行结果:
1
2
3
1

从这个例子中,内部函数直接作为返回值返回了,在这里inc1就是一个闭包,闭包本质上是一个函数,它由两部分组成,inner函数和变量x,闭包使得这些变量值始终保存在内存中,

为什么要使用闭包?

闭包避免了使用全局变量,此外,闭包可以将函数与其所操作的某一些数据关联起来。

时间: 2024-08-03 16:10:14

【人生苦短 PYTHON当歌】——PYTHON函数式编程02的相关文章

Python函数以及函数式编程

本文和大家分享的主要是python 函数及函数式编程相关内容,一起来看看吧,希望对大家 学习python有所帮助. 函数基本语法及特性 定义 数学函数定义: 一般的,在一个变化过程中,如果有两个变量 x 和 y ,并且对于 x 的每一 个确定的值, y都有唯一确定的值与其对应,那么我们就把 x 称为自变量,把 y 称为因变 量, y 是 x 的函数.自变量 x 的取值范围叫做这个函数的定义域. 但编程中的「函数」概念,与数学中的函数是有很  同的  函数是逻辑结构化和过程化的一种编程方法 函数的

Python进阶之函数式编程(把函数作为参数)

什么是函数式编程? 什么是函数式编程? 函数:function 函数式:functional,一种编程范式 函数式编程是一种抽象计算的编程模式 函数≠函数式,比如:计算≠计算机 在计算机当中,计算机硬件是最底层的,而越往上语言越高级 低--------------------------------->高计算机硬件-->汇编语言-->c语言-->Python语言 ↓ ↓ ↓ 指令 函数 函数式计算机------------------------>计算(数学) ○ 函数式编程

python 函数和函数式编程

什么是函数 调用函数 创建函数 传入函数 形参 变长参数 函数式编程 变量的作用域 递归 生成器 1 什么是函数 函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理 的小块,把重复代码放到函数中而不是进行大量的拷贝--这样既能节省空间,也有助于保持一致性,因为你只需改变单个的拷贝而无须去寻找再修改大量复制代码的拷贝. 1.1 过程 vs 函数 在C++里我不记得有过程这种东西,但是在一些其它的语言比如PL/SQL里面会有过程.过程和函数一样是可以调用的代码块,但是

Python学习之函数式编程

本文和大家分享的主要是 python开发中函数式编程相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. 1. python把函数作为参数 import math def  add(x, y, f): return f(x) + f(y) print add(-5, 9, abs) print abs(-5) + abs(9) print add(25, 9, math.sqrt) 2. python中map()函数 map() 是  Python  内置的高阶函数,它接收一个函数 

python中的函数式编程与装饰器

2.1 python中的函数式编程 函数式编码的特点 把计算视为函数而非指令 纯函数式编程,不需要变量,没有副作用,测试简单 支持高阶函数,代码简洁 python支持的函数式编程 不是纯函数式编码:允许有变量 支持高阶函数:函数也可以作为变量传入 支持闭包:有了闭包就能返回函数 有限度地支持匿名函数 2.2 python中高阶函数 函数名可以作为变量,如 高阶函数:只能接收函数作为参数的函数 变量可以是指向函数 函数的参数可以接收变量 一个函数可以接收另一个函数作为参数 能接收函数作为参数的函数

一、Python 进阶 之 函数式编程

Python 进阶 之 函数式编程 写在前面 入门阶段的系列笔记传送门 → 进这里 已经掌握了基础的内容如下: 变量和数据类型:Python 内置的基本类型 List 和 Tuple:顺序的集合类型 条件判断和循环:控制程序流程 Dict 和 Set:根据Key访问的集合类型 函数:定义和调用函数 切片:如何对 list 进行切片 迭代:如何用 for 循环迭代集合类型 列表生成式:如何快速生成列表 接下来我要学会: 函数式编程 如何使用 Python 的模块(内置模块和第三方模块) 面向对象编

python基础之函数式编程

一.函数的定义 1.定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 2.特性: (1)减少重复代码: (2)使程序变的可扩展: (3)使程序变得易维护. 3.函数的分类 (1)内置函数:为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数.对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max() (2)自定义函数:很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,

python函数及函数式编程

函数是对程序逻辑进行结构化或过程化的一种编程方法.函数与过程相比,两者都是可以被调用的实体,但是传统意义上的函数或者"黑盒",可能不带任何输入参数,经过一定的处理,最后向调用者传回返回值,而过程是简单.特殊.没有返回值的函数.其实,python的过程就是函数,因为在函数中如果没有显式return返回值的话,解释器会隐式地返回默认值None. 1.函数定义 def foo([argument-list]): "function_document_string" foo

Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊

函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 而函数式编程(请注意多了一个"式"字)--Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算. 我们首先要搞明白计算机(Computer)和计算(Compute)的概念. 在计算机的层次上,CPU执行的是加减乘除的指令代码

python函数与函数式编程

https://www.cnblogs.com/evablogs/p/6699515.html 在理解函数式编程之前,我还是对函数的调用,参数传递以及函数的嵌套调用一头雾水,还是花了点时间整理了写思绪,以便我后面对装饰器复杂的参数传递和函数的调用的理解. 函数的定义 def 函数名(): 代码块 例如: 1 2 3 def func_name():      block      return value                                     #return语句