20171101 函数
函数定义:
def func(a,b): //关键字def 传入参数 return a+b func(1,2) //调用函数
函数的参数:
形式参数:在定义函数时,括号中的变量名叫做“形式参数
实际参数:在调用函数时,括号中的变量名叫做“实际参数
#函数的默认参数
In [1]: def fun(x, y=100): # 给 y 定义一个默认值 ...: print x + y ...: In [2]: fun(1) # 调用的时候如果没有给定 y 的值则使用默认值 In [3]: fun(1,2) # 如果有给定 y 的值则不使用默认值
#In [4]: def fun(x=100, y): # 默认值必须放在最后,否则会报错,这里应该写成 def fun(y, x=100)
def func(a,b,*c): print(a) print(b) print(c) //c就是一个元组 func(1,2,3,4,5,6) 输出: 1 2 (3, 4, 5, 6)
def func(a,b,**c): print(a) print(b) print(c) //c就是一个字典 func(1,2,x=99,y=100) 输出: 1 2 {'y': 100, 'x': 99}
高阶函数:
map()
参数:接收一个函数 f 和一个 list列表(或可迭代的参数),并通过把函数 f 依次作用在 list 的每个元素上
def f(x): return x*x print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
reduce()
reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
reduce()还可以接收第3个可选参数,作为计算的初始值。第一次为f(1,3),然后f(4,5)。。。。
def f(a,b):
return a + b
reduce(f, [1, 3, 5, 7, 9], 100)
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False, filter()根据判断结果自动过滤掉不符合条件的元素,
返回值:返回由符合条件元素组成的新list。
例1:要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数。
def is_odd(x): return x % 2 == 1 print filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
例2:删除 None 或者 空字符串
def is_not_empty(s): ''' if s: return True if len(s.strip()) > 0 return True ''' return s and len(s.strip()) > 0 print filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])
sorted()
示例1: >>> a=[1,2,5,3,9,4,6,8,7,0,12] >>> a.sort() >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12] >>> a=[1,2,5,3,9,4,6,8,7,0,12] >>> sorted(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12] >>> a [1, 2, 5, 3, 9, 4, 6, 8, 7, 0, 12] 区别: 对于一个无序的列表a,调用a.sort(),对a进行排序后返回a,sort()函数修改待排序的列表内容。 而对于同样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响。
lambda()匿名函数
可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体。在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。
func=lambda x:x+1 print(func(1)) #2 print(func(2)) #3 #以上lambda等同于以下函数 def func(x): return(x+1)

浙公网安备 33010602011771号