lambda 表达式
g=lambda x,y:x*y
调用g(2,3)
lambda 不需要写return函数
reduce 函数
reduce(function,list) 每次从list中取出两个值,然后运算function的结果放入list ,
直到最后list剩下最后一个值,就是所要的结果(递归的替代)
reduce(lambda x,y:x*y ,l)
from __future__ import division __是两个下划线,单词与下划线之间有空格。把数字强制转为浮点型
pass 关键字意思是不操作。
字典来实现switch 方法
from __future__ import division
print x+y
print x-y
print x*y
print x/y
operator.get(o)(x,y)
内置函数:
abs() 绝对值
max() 最大值
min ()最小值
len() 求长度
divmod() 求商和求模
pow() 求幂结果 x**y x 的y次幂
round()
callable() 测试函数是否可被调用
isinstance(l,list) l 是不是list类型对象
cmp()比较两个字符串
range()
xrange()
type()
int()
float()
complex()
str()
list()
tuple()
hex()
oct()
chr()
ord()
查询帮助用help 如 help(str)
str.capitalize() 把字符串首字母大写,类的方法,这儿不用传值
str.replace(‘a’,‘b’,3) 把a替换成b 替换3次 ,替换次数为可选参数
str.split(sss,m) 把字符串str 变量 按照sss 规则 分割m次个
或者导入模块的方式 如 import String
string.replace(a,b,c) 把a 的b部分替换成c
filter(function,list) 把list中每个元素作用function 函数,如果返回结果是true 则保留下来,这样就“过滤” 了东西
zip(list1,list2,list3)分别从list 1,2,3 中每次取一个 依次选取,然后组成元组。长度不一时候会选取最短的作为标准
或者
map(None,list1,list2,list3) 和上面结果一样,长度不一的时候会选取长的作为标准,空的位置会填写None
map(function,list1,list2,list3) 还可以把结果元组按照function 来进行运算,结果返回列表
reduce(function,list)。。。
import 导入模块代码 (同级目录)如:
import cal
cal.add(5,9)
模块里写入这样一句话 if(__name__=="__main__"): add(2,4)!!!!
证明函数是直接被调用的,
如果被调用(间接调用)那么不是main 的函数的函数体(块)就不会被执行!!!!!!
导入模块的顺序:先是当前目录---》lib----》export package---》 使用的先后顺序也是这样
包
创建一个包
建立一个名字为包名字的文件夹,
在该文件夹下创建一个__init__.py 文件
根据需要在该文件夹下存放脚本文件,已编译扩展及子包
import pack.m1.pack.m2
或者import pack.m1 as c
调用就成了c.add(a,b)
或者 from pack.m1 import add
调用就可以直接add(a,b)
正则表达式
import re
s=r‘abc’
re.findall(s,"abcdsfafasfddasfasf")
返回的是list
不在[] 括号里的^表示行开头 $表示行结尾
在[]里^ 表示非
()表示分组数据,在这个模块内,可以进行或,findall函数如果有分组,优先返回的是分组当中内容
为了让正则更快,可以先把正则编译
reg=r'src="(.+?\.jpg)" width' #外层单引号,内层双引号*?表示懒惰量词 只匹配最小范围的一个。
imgre= re.compile(reg)
imglist=re.findall(imgre,html)
爬虫:
导入库import urllib
def getHtml(url):
page=urllib.urlopen(url)
html=page.read()
return html
x=0
for imgurl in imagelist:
urllib.urlretrieve(imgurl,"%s.jpg" % x)
x+=1