函数的定义
语法如下:
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']
                    
                
                
            
        
浙公网安备 33010602011771号