鲜荣彬
Herry

函数的定义

     语法如下:

   def 函数名(param1,param2,....)

      return value (如果没有返回值,直接可写 return)

#计算List的所有偶数和
def square_of_sum(L):
    sum = 0;
    for item in L:
        if item%2==0:
           sum+=item;
    return sum

 

  函数的返回值

  与其他语言不太一样,python 可以返回多个值。

def quadratic_equation():
    return 'a','b','c','d'
    
x,y,z,g = quadratic_equation()

print x,y,z,g

    输出结果 a b c d

    print函数,发现返回的结果是 一个 tuple,   ('a', 'b', 'c', 'd')

  定义默认参数

    函数的默认参数作用是简化调用。

    规则:默认参数只能定义在必须参数的后面。

def hello(name, param='world'):
      return name,'hell0,',param

 

    定义可变参数

      可变参数可以让函数接受任意个参数。

      语法规则,在参数名前加  *  号 即可。

def average(*args):
      return  args

    高阶函数:

       在python中,可以把函数作为参数,传入一个高阶级函数中。

def add(x,y,func):
      return func(x)+func(y)

add(-5,8,abs)

 

     (1) map()

     语法: map(func,list)

           func(item)

     作用: 通过自定义的函数func,遍历list中每个元素,返回新的list,且不会改变元祐的 list 。   

def format_name(s):
    return s[0].upper()+s[1:].lower()

users = ['adam', 'LISA', 'barT']  
print map(format_name, users)  #['Adam', 'Lisa', 'Bart']
print users  #['adam', 'LISA', 'barT']

    (2)reduce()

       语法:reduce(func,list,initItem)

        func(pre,next) 

       作用:遍历list,并将前两个元素的结果,作为后一次计算的pre元素,返回新的一个值。   

def prod(x, y):
    print x,y
    return x*y

print reduce(prod, [2, 4, 5, 7, 12])

"""
2 4
8 5
40 7
280 12
3360
"""

    (3) filter() 函数

       语法:filter(func,list)

       作用:根据func函数逻辑自动过滤掉不符合条件的元素,返回符合条件的元素组成的list。

def is_not_empty(s):
      return s and len(s.strip())>0
print filter(is_not_empty, ['test',None,'','str',' ','END'])

       (4) sorted() 函数

      语法: sorted() || sorted(list,func)

      作用:通过传入func(item1,item2) 自定义排序;item1>item2, return -1; item1<item2, return 1; item1 == item2, return 0;

def cmp_ignore_case(s1, s2):
    u1 = s1.upper()
    u2 = s2.upper()
    if u1 < u2:
        return -1
    if u1 > u2:
        return 1
    return 0
print sorted(['A', 'R', 'a', 'C'], cmp_ignore_case)

     (5)range()函数

        语法:range(startIndex,endIndex,间隔值)

      作用:可以用来快速生成列表

    比如生成  [1*2,3*4,...99*100]的列表

print [x*(x+1) for x in range(1,100,2)]

       Python 函数中的

     (1)返回函数   

#计算列表中的  乘积
def calc_prod(lst):
    def calc():
        def f(x,y):
            return x*y
        return reduce(f,lst)
    return calc

f = calc_prod([1, 2, 3, 4])
print f()  #24

      (2)闭包

        一般来说,内层函数引用了外层函数的变量,然后返回内层函数的情况,称为闭包。

#每次执行分别返回 1*1 2*2 3*3
def count():
    fs = []
    for i in range(1, 4):
        def f(j):
            def g():
                return j*j
            return g
        r = f(i)
        fs.append(r)
    return fs

f1, f2, f3 = count()
print f1(), f2(), f3()

      (3) 匿名函数

       语法: lambda 参数名: 表达式

     匿名函数只能有一个表达式,不写return ,返回值就是 该表达式的结果。

print filter(lambda s: s and len(s.strip())>0, ['test', None, '', 'str', '  ', 'END'])

 

复杂表达式

     字符串可以通过 % 号进行格式化,用指定的参数替代 %s。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
def generate_tr(name, score):
    return '同学 %s get score is %s' % (name, score)

tds = [generate_tr(name,score) for name, score in d.iteritems()]

print tds

条件过滤 

def toUppers(L):
    return [ x.upper() for x in L if isinstance(x,str)]

多层表达式

[m + n for m in 'ABC' for n in '123']

 

posted on 2019-06-06 16:26  Herry彬  阅读(188)  评论(0)    收藏  举报