抽象函数
一 ==概念==:
函数是一个可以重复使用的代码块,而且他有名称,授受参数的传入,返回输出
抽象,迭代输出列表的例子
例如:
l = [1,2,3,4,5,6]
for i in l:
print i
工具:sublime text2
界面更改字体:
{"font_face":Ubuntu Mono
"font_size":14
}
二,==内置函数==:
- max()
- min()
- len()
- type()
- id()
- dir()
三,==创建==
def test(a):
"""
test doc.
"""
a.sort()
return a
print test(l)
- 保留关键字 def 空格 函数 名称
- 函数名后面是需要传入的参数,放在小括号,声明部分以冒号结束
- 第二行建议三引号括起来写描述文档
- 调用函数文档:
test.__doc__
- 或者
help(test)
- 调用函数文档:
- 函数一定要有return返回值
四,==函数的参数==
这个参数用来像函数内部传递一些参数,处理后return返回
传递参数
-
位置参数(必填),关键字参数(可选)
默认参数是位置参数,从左至右传入
关键字参数,直接通过变量名匹配
-
参数的值是局部的,他只在函数内部发生作用
全局作用可以用 globle a
-
*是元组 #收集器
**是字典
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 ,"标明原因"
注意事项
- 学习使用好函数
- 现实现代码的功能,在把他抽象成函数
- 抽象成函数:先写伪代码,命名规范,默认参数
- 考虑函数健壮性
- 自省fun.__code__
- 作用域
- 可变参数的问题
lambda匿名函数
lambda,行内函数
-
格式:
lambda x: x+1
lambda 参数: 表达式
简单任务用lambda,复杂任务用def
-
如何调用
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)
-
filter函数
.isalnum() 所有字符都是数字或字母
f = filter(lambda x: x.isalnum(),l)
filter 把不满足的条件全部过滤
-
递归
调用函数本身
factorial ==阶乘==