1.高阶函数
a = abs #变量a可以指向abs函数本身
a(-10) #返回10
函数名也是变量
函数可作为另一个函数的参数
2.map()函数和reduce()函数
map(a,[1,2,3,4]) #a是一个返回(x*x)的函数,返回[1,4,9,16]
map能将一个字符串变成list
reduce(a,[1,3,5]) #a是返回(x*10+y)的函数,reduce的过程就是s=1*10+3,s1=s×10+5,最终等于135.
reduce能将list变成字符串
3.filter() 筛选函数
filter(a,[1,2,4,5]) #删掉偶数,a是单参数函数返回n%2==1,可看出返回是个布尔值,list的元素为真删除,返回【1,5】
strip() #删除字符串收尾的元素,括号中位空默认删除空格。
4.sorted()函数
sorted([35,5,12,9,21]) #排序,数字可直接对比,str会根据ascii码,大写字母的值小于小写
自定义,倒叙
def reversed_cmp(x,y): #默认排序从小到大,规则(x>y,返回1;x<y,返回-1;x=y,返回0),这里反写就行
if x>y:
return -1
if x<y:
return 1
return 0
sorted([36,2,14,5],reversed_cmp)
5.返回函数
就是return 一个函数
循环闭包参考我的其他文章python难点总结
6.匿名函数
lambda x:x*x #没有函数名的函数。使用方法:(lambda 参数:方法)。
7.装饰器
装饰器难点参考python难点总结
a.__name__ #获取函数的原始名字,由于能使用变量代替函数名,所以需要这个
带参装饰器(decorator)例子
import functools #下面@functools.wraps(func)用到本模块
def log(text): #3层嵌套装饰器。这是第一层
def decorator(func):
@functools.wraps(func) #装饰后,__name__变成wrapper,这个就是让变回func,不然依赖函数签名的会报错
def wrapper(*args, **kw):
print '%s %s():' % (text, func.__name__)
return func(*args, **kw)
return wrapper
return decorator
#用法,调用b后,相当于执行了b=log(a)(b)
@log(a) #a是上面的text
def b():
pass
8偏函数
就是把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数
import functools
int2=functools.pepartial(int,base=2) #int是一个将字符串类型的数字变成整形的数字函数,base模式是10
9使用模块
*******建立模块的默认规矩,中间有注释的那两行.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
' a test module ' #这里用于注释,想写啥就写啥
__author__ = 'Michael Liao' #这里写大名
import sys
在cmd中直接调用.py文件,python解释器会把特殊变量__name__变成'__main__',也就是说如果在其他地方看到
if __name__=='__main__': #其实是方便开发人员测试模块的,在因为在中断调用模块才是执行,如果被其他模块import了本模块,if __name__=='__main__'下面的函数是不会被执行的.
test() #test是本模块中的一个函数
import sys
sys.argv[1] #获取命令行第二个参数,第一个是[0],指向当前.py的地址
sargv注释中的命令行指的是,在cmd中调用.py时的那条.
*******别名
try: #先引入cStringIO模块,如果出错则再引入StringIO模块(前者速度块,看平台是否支持)
import cStringIO as StringIO
except ImoirtError
import StringIO
*******作用域
一般用_xxx或__xxx表示私有变量(__xxx__是默认特殊变量,因此我们不用这种方式.)
10第三方模块
pip install PIL #使用pip下载第三方,在cmd中输入
我没成功,而是直接在http://www.pythonware.com/products/pil/这网上下载exe文件安装的.
*******图片操作
import Image #如果下载的是Pillow而不是PIL,好像是from PIL import Image
im = Image.open('a.png') #打开一个图片(a.png)并赋给变量im
print im.format,im.size,im.mode#打印文件格式,文件大小,文件模式
im.thumbnail((200,100)) #生成略微图
im.save('thumb.jpg','JPEG') #保存略微图
其他常用的第三方库还有MySQL的驱动:MySQL-python
,用于科学计算的NumPy库:numpy
,用于生成文本的模板工具Jinja2
import sys
sys.path #查看路径
sys.path.append('d:/workspace/') #增加路径
from __future__ import division #使用更高版本的除法.在3.x版本中,/带小数,//不带小数.