python脚本语言2

时间:2021-05-15 07:30:35

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 方法

#coding: utf-8
from __future__ import division
def jia(x,y):
    print x+y
def jian(x,y):
    print x-y
def cheng(x,y):
    print x*y
def chu(x,y):
    print x/y
operator = {'+':jia,'-':jian,'*':cheng,'/':chu}
def f(x,o,y):
    operator.get(o)(x,y)
f(3,'+',2)


内置函数:

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