函数 收集参数(函数式编程)

文档化函数

def suqare(x):
    'Calculate the square of x'
    return x**2

square.__doc__

收集参数

def print_params(x, *params):
    print x,params

listn = [1,2,4]

注意以下调用区别:

print_params(listn)

output: [1,2,4], ()

print_params(*listn)

output: 1,(2,4)

同理,**是处理字典.

参数收集逆过程

def add(x,y):
    return x+y
params=(1,2)
add(*params)

可以使用通用的技术来处理字典--使用'**'运算符号.

函数式编程

Python有一些函数式编程的机制.包括lamda表达式,以及map.reduce,filter函数.

map

map(str,range(10))相当于[str(i) for i in range(10)]

filter可以基于一个返回布尔值的函数对元素进行过滤

def func():
    return x.isalnum()
seq=["foo","x41","!?","**"]
filter(func,seq)

还可以使用lamda表达式,创建短小函数:

filter(lamda x:x,isalnum(), seq)

reduce:将序列的前两个元素于给定的函数联合使用,并且将他们的返回值和第三个元素联合使用,知道整个序列处理完毕,并且最终得到一个结果.

Eg:计算一个序列的数字和

numbers=[32,4,3,3,42,4]
reduce(lamda x,y:x+y,numbers)

访问全局变量两种方式

x = 1
def change():
    global x
    x = x+1

或者

x = 1
def change():
    globals()['x'] += 1

globals()或者vars()表示全局作用域,是一个不可见的字典,而locals()便表示局部作用域.

posted @ 2017-06-20 21:26  jinzhongxiao  阅读(147)  评论(0编辑  收藏  举报