文档化函数
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()便表示局部作用域.