oldboy_09_03day
1、split 分割
2、内置函数
__name__ ------- 主动执行还是被其他程序调用; 本程序内 __name__ 值为 __main__ ;其他程序调用时,__文件名__
__file__ ======当前文件路径、是文件的相对路径
__doc__ ======当前程序说明文档
3、函数 def、形式参数
def test( a,*b):
print a , b
*b形参数 不限制参数个数 ---
test(‘1‘, ‘2‘,‘3‘)
* 代表可以参数一个元组(2,3)
def test1(a,b,c):
print a,b,c
test1(‘1‘, ‘2‘, ‘3‘)
def test2(a,b,*c):
print a,b,c
d=(‘1‘,‘2‘,‘3‘)
f=test2(‘4‘, ‘5‘,d)
k={‘a‘:1,‘b‘:2,‘c‘:3}
def test3(a,b,**c):
print a,b,c
test3(31, 32,c=‘1‘,d=‘2‘)
def test(a,**b)
** 代表可以传入 一个字典;
def 默认值
def test5(a,b=‘test5‘)
print a,b
4、函数局部变量
test1=‘ceshi‘
def a():
print test1
def b():
test1=‘insite ceshi‘
def c():
golbal test1 #引用全局变量 test1
testoutsit=‘outsite_ceshi‘
def intest():
print testoutsit
def intest1():
testoutsit=‘insitetest‘
print testoutsit
def intest2():
global testoutsit
testoutsit=‘changeinstie‘
print testoutsit
intest()
intest1()
intest2()
print testoutsit
5、return
def back():
for i in range(20):
print i
if i==10 :
return i
else:
print i
a=back()
if a==10:
print ‘return ok!‘
return 整个函数跳出函数执行
得到一个数值,或者返回一个结果
一般return 写在结尾;
#a=11>6 ? True:False (三步运算符)
ceshi=‘tr‘ if 2>1 else ‘fl‘
print ceshi
和 if ,else 一样
if 11>6:
a=Trun
else:
a=False
=================
6.1 lambda 函数
lambda x,y:x+y
6.2 with---as :
with as 方便打开文件 ,给了文件打开;和close,
with open (file.txt ,‘r‘) as f: # with open 做了两个动作 1、打开文件 2、file.close
6.3、bool 布尔值 ;python 内置函数
print bool(‘‘) - -------- print 为 flase
print bool(‘date‘) ----- print 为True
为空 布尔值 都为假;不为空 布尔值都为真
6.4 yield 迭代器
保存函数的执行状态;执行一半跳出;后可再进行执行
大数据读取;
def readfile():
tel=0
while True:
with open(‘E:\licence.py‘,‘r‘) as f:
f.seek(tel)
date=f.readline()
if date:
tel=f.tell()
yield date
else:
return
files=readfile()
date1=files.next()
date2=files.next()
date3=files.next()
date4=files.next()
date5=files.next()
print date1,date2,date3,date4,date5
print ‘==================‘
date1=files.next()
date2=files.next()
date3=files.next()
date4=files.next()
date5=files.next()
print date1,date2,date3,date4,date5
print ‘=====================‘
for i in files:
print i
6.5 range 、xrange效率更高 (xrange 也是迭代器,一行一行的返回,只记录开始和结尾)
6.6 内置函数
1、dir()
显示当前文件中所有变量名称
2、vars()
当前文件中所有变量名称及值
3、reload() 和import 都是引入别的文件;
reload 重新加载模块 ;import 只执行一次;
import
import
reload
reload
当配置文件被修改;不重启服务时,重新reload
4、id()
id(2)或者 id(c)
打印的是2或者c在内存中的地址
5、cmp 进行比较
cmp(2,10)小于 返回 ‘-1’
cmp (10,2) 大于 返回 ‘1’
cmp (10,10) 等于 返回 ‘0’
6、abs 绝对值
abs(-1)
7、divmod()除 取商和余数
divmod(10,4)
8、max()
max 列表也可以取最大
max([1,2,3,4,6,20]) max(1,2,3,)
9、min () 比较最小
10、sum() 求和
11、pow()幂
pow(2,4)2的4次方
12、len()统计字符串长度
13、all() 全&,全部为真,才为真
#web 前端登录 user pass info 全为真;为真
print all(‘1‘,‘c‘,none)
14、any() 只要有一个为真,就为真
print any(‘1‘,‘c‘,none)
15、chr()ASICC 码对应的位置
16、ord()asics 码对应的数值
17、hex()转化为16进制 oct()八进制bin()二进制
0X是16进制的开始
0 是8进制
0b 是二进制的开始
18、.format
19、zip 把列表列表压缩到列表中
x=[1,2,3]
y=[4,5,6]
z=[7,8,9]
zip(x,y,z)
20、map()
lamdba 匿名函数 可与定义 lambda x:x+1 ; 定义匿名函数x,函数意义 x+1 ;ruturn x+1值
map(lambda x:x+1,[3,4,5])
def fun(x):
return x+1
a=fun(2)
print type(a)
print map(fun,[20,30])
map 遍历列表[3,4,5] 添加到函数 jia的中进行处理,并返回
引用函数是引用函数的名字
def fun1(x):
return x+1
c=[1,2,3,4,5,6,7,8,9,10]
a=fun1(2)
print type(a)
print ‘this is map %s‘%(map(fun1,c))
print ‘this is map lambda %s‘%(map(lambda x:x+1, c))
22、filter()
filter (lamdba x:x>5 ,[3,4,5,6,7,8] )
def fun2(a):
return a>6
print ‘this is filter %s‘ %(filter(fun2,c))
print ‘this is filter lambda%s‘%(filter(lambda x:x>5, c))
只是过滤;
23、reduce()累计 加入下次计算
reduce(lambda x,y:x+y ,[1,2,3,4,5,6])
def fun3(x,y):
return x+y
print ‘this is reduce %s‘ % (reduce(fun3, c))
print ‘this is reduce lambda %s‘%(reduce(lambda x,y:x+y,c))
只能传进去2个值
24、random 随机验证码
练习
25、MD5 加密
import md5
ceshi=md5.new()
print dir(md5) 查看md5的方法
print vars(md5) 查看md5 的方法和值
验证是,md5 加密一次 再去数据库验证
import md5
ceshi=md5.new()
#print dir(md5)
#print vars(md5)
ceshi.update(‘userpasswd‘)
print ceshi.hexdigest()
26、re python正则表达式
import re
dir(re)
a=‘ceshi,name,dfsdndsfsdnn’
a1=re.match(‘c.*’,a)‘.‘ 代表任意字符 ‘*’ 代表出现0次或者最多 # match 必须是字符串 开头匹配
print a.group
b=re.search(‘e.*‘,a) 整个字符串检索一遍;进行匹配
c=re.search(‘e,*d‘,a) 匹配从e到d
d=re.findall(‘n.‘,a) 所有的全部查找 防到一个列表中;
f=re.split (‘n.‘,a) 字符串 按照表达式进行分割;剩下的放到一个表中
g=re.sub(‘n.’,‘ww‘,s)查找后替换 查找n 替换为ww;在s 中查找
k=h[a-z]o
k1=h[a|b|c]0 匹配 hao 或者hbo或者hco ‘|’ 竖线 是或的意思
正则表达式获取网址、ip、手机号、邮箱
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import re
import sys
def getIPAddFromFile(fobj):
regex = re.compile(r‘\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b‘, re.IGNORECASE)
ipadds = re.findall(regex, fobj)
print ipadds
return ipadds
def getPhoneNumFromFile(fobj):
regex = re.compile(r‘1\d{10}‘, re.IGNORECASE)
phonenums = re.findall(regex, fobj)
print phonenums
return phonenums
def getMailAddFromFile(fobj):
regex = re.compile(r"\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b", re.IGNORECASE)
mails = re.findall(regex, fobj)
print mails
return mails
def getUrlFromFile(fobj):
regex = re.compile(r"http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+", re.IGNORECASE)
urls = regex.findall(fobj)
print urls
return urls
def main(FilefilePath):
fobj = open(FilefilePath, ‘rb‘).read()
urllist = getUrlFromFile(fobj)
mailList = getMailAddFromFile(fobj)
phoneNum = getPhoneNumFromFile(fobj)
ipaddlist = getIPAddFromFile(fobj)
if __name__ == ‘__main__‘:
main(sys.argv[1])
======================
rn=r‘[0-9]+(?:\.[0-9]+){3}‘ #匹配IP地址
26、序列化和json
内存中的数据保存
字典等不能直接写入到文件中
序列化 内存中的类型转化为字符串存储到硬盘;
读入中通过序列化读取回来
import pickle
dir(pickle)
pickle.dump
pickle.load
f=file(‘dump.txt‘,‘w‘)
import os
import pickle as p
c={‘a‘:1,‘b‘:2,‘c‘:3}
#with open(‘dumpfile‘,‘wb‘) as f:
f=open(‘dumpfile‘,‘w‘)
p.dump(c,f)
f.close()
e=open(‘dumpfile‘,‘r‘)
c=p.load(e)
print c
print os.system(‘dir‘)
======================
内存数据交换 通过pickle.dumps;发送过去;对端pickle.load
json 通用存储;各种编程语言都能读取;内存数据转化为字符串
json 只能序列化常用的数据类型 (字符串、列表、字典、元组、等; ) python 的类 、函数、等不能被序列化
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。