python知识点 07-11

python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量

python的

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。

nonlocal是在Python3.0中新增的关键字,python2.x不提供支持

解包参数:

在调用函数时使用*语法

def func(a,b,c,d):
    print(a,b,c,d)

args = (1,2) + (3,4)
       
if __name__ == '__main__':
    func(*args)

这个主要是在2.6中使用apply函数实现,但是在3.0之后就废弃了这个方法,不会调用任何函数

参数类型:

1、关键字参数 

2、默认参数

3、任意参数 *,** 不过**必须在*的后面出现

lambda表达式

lambda arg1,arg2,arg3 : expression using arguments

函数式编程工具:

map、filter和reduce

map把每一项传递给函数并收集结果,filter手机那些函数返回一个True值的项,并且reduce通过对一个累加器和后续项应用函数计算一个单个的值,reduce是在Python3.0的functools模块中可用,而不是内置作用域中。

map(function,sequence)

把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。

如果function有两个参数,即map(function,sequence1,sequence2)。

例子:

求1*1,2*2,3*3,4*4

map(lambda x:x*x,range(1,5))

返回值是[1,4,9,16]

reduce(function,sequence)

function接收的参数个数只能为2!

先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给

function,然后只返回一个结果。

例子:

求1到10的累加

reduce(lambda x,y:x+y,range(1,11))

返回值是55。

filter(function,sequence)

function的返回值只能是True或False!

把sequence中的值逐个当参数传给function,如果function(x)的返回值是True,就把x加到filter的返回值里面。一般来说filter的返回值是list,特殊情况如sequence是string或tuple,则返回值按照sequence的类型。

例子:

找出1到10之间的奇数

filter(lambda x:x%2!=0,range(1,11))

返回值

[1,3,5,7,9]

原文地址:https://www.cnblogs.com/beiyeren/p/3838343.html