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)

 

posted @ 2017-11-01 22:21  木头爱木头媳妇  阅读(77)  评论(0)    收藏  举报