抽象函数

2016-06-04  本文已影响22人  Nico酱

抽象函数

一 ==概念==:

函数是一个可以重复使用的代码块,而且他有名称,授受参数的传入,返回输出

抽象,迭代输出列表的例子

例如:

l = [1,2,3,4,5,6]
for i in l:
        print i

工具:sublime text2

界面更改字体:

{"font_face":Ubuntu Mono

"font_size":14

}


二,==内置函数==:

三,==创建==

def test(a):
    """
    test doc.
    """
    a.sort()
    return a
print test(l)
  1. 保留关键字 def 空格 函数 名称
  2. 函数名后面是需要传入的参数,放在小括号,声明部分以冒号结束
  3. 第二行建议三引号括起来写描述文档
    1. 调用函数文档:test.__doc__
    2. 或者help(test)
  4. 函数一定要有return返回值

四,==函数的参数==

这个参数用来像函数内部传递一些参数,处理后return返回

  1. 传递参数

  2. 位置参数(必填),关键字参数(可选)

    默认参数是位置参数,从左至右传入

    关键字参数,直接通过变量名匹配

  3. 参数的值是局部的,他只在函数内部发生作用

    全局作用可以用 globle a

  4. *是元组 #收集器

    **是字典

def test(a,b,*arg1,**arg2):     #位置参数在前,元组需放在字典参数前
    '''
    测试元组,字典,位置参数
    '''
    return a,b,arg1,arg2
print test(3,4,4,5,6,j=4,k=3,m=5)

结果:(3, 4, (4, 5, 6), {'k': 3, 'j': 4, 'm': 5})

pass 的问题

print "a>b" if a>b else pass

会出错,因为pass不能作为输出,可以加上引号"pass"


没有return会返回none


==抽象加法例==

def add(*num):
    '''
    加法
    '''
    n = 0
    for i in num:
        n += i 

instance(num,int)判断类型

assert断言关键字 ,成立就什么都不做,如果条件不成立就会报错 assert add(a,b) == 4 ,"标明原因"


注意事项

  1. 学习使用好函数
    1. 现实现代码的功能,在把他抽象成函数
    2. 抽象成函数:先写伪代码,命名规范,默认参数
    3. 考虑函数健壮性
  2. 自省fun.__code__
  3. 作用域
  4. 可变参数的问题

lambda匿名函数

  1. lambda,行内函数

  2. 格式:

    lambda x: x+1

    lambda 参数: 表达式

    简单任务用lambda,复杂任务用def

  3. 如何调用

    l = lambda x: x+1
    l(2)
    

    lambda主体内想要用if语句,需要用三元表达式

    三元表达式 x if x>y else y

    l = lambda x,y:x if x>y else y 例子

    for 循环,利用列表推导式

    l = [222,23,467,34,657]
    f = lambda x:[item for item in x if item > 30]
    print f(l)
    
  4. filter函数

    .isalnum() 所有字符都是数字或字母

    f = filter(lambda x: x.isalnum(),l)

    filter 把不满足的条件全部过滤

  5. 递归

    调用函数本身

    factorial ==阶乘==

上一篇下一篇

猜你喜欢

热点阅读