一、递归
递归自己调用自己 递归时最多循环999次就不可以再循环了,一定要给出循环机会,没有循环效率高
count=0 def abc(): global count count+=1 print(count) print('abc') abc() #递归调用 abc()
二、OS方法
1、os.walk() 可以把每一个目录都循环找到
import os for cur_path,cur_dirs,cur_files in os.walk(r'F:\python'): print('当前路径',cur_path) print('当前目录下有哪些文件夹',cur_dirs) print('当前目录下有哪些文件',cur_files) print('='*20) #字符串相乘显示多少次
还可以通过关键字查找文件,代码如下:
def find_movie(keyWord,path='F:\PPT模板'): for cur_path,cur_dirs,cur_files in os.walk(path): # if keyWord in str(cur_dirs): # print(cur_path) for file in cur_files: # if keyWord in file: if file.endswith(keyWord): print(cur_path) find_movie('pptx') #根据关键字搜索对应的文件目录
2、getcwd()给出当前目录
print(os.getcwd()) #给出当前目录
res=eval('[1,2,3,4]') #执行一些简单的python代码 加减法计算 print(exec(s2)) #可执行代码
三、内置函数
定义变量时避免用关键字,如果用有的函数名会被重新定义之前功能不能使用
1. import math
res=max([1,3,4,5]) #求最大值
res1=sum(range(1,100)) #求1到100的和
print(chr(77)) #把数字转换成ASCII的值
print(ord('A')) #把字母转换成ASCII的值
print(dir(res)) #如果'.'不出来方法,可以看到这对象里面有哪些方法
非空即真
print(bool([])) #转布尔类型的为true false
print(bool(())) #转布尔类型的为true false
print(bool({})) #转布尔类型的为true false
print(bool(None)) #转布尔类型的为true false
print(bool('')) #转布尔类型的为true false
2.排序
s='123456'
print(list(reversed(s))) # 倒排序
print(sorted({"k1":"v1","k2":"v2"},reverse=False) ) #reverse=True 根据k1,k2倒叙排
3. zip() 把两个列表连在一起
name=['zyy','hhh','oo'] money=[50,20,30,80] for n,m in zip(name,money): #把name与money连接在一起 #print('%s==>%s'%(n,m)) print(n,m) print(list(zip(name,money)))
4.map函数 ,循环调用函数
def intToStr(num): return str(num).zfill(2) res=map(intToStr,range(1,34)) #自动循环调用函数,保存返回值 print(list(res))
5.lambda 函数 匿名函数,功能很简单只用一次 lambda是定义匿名函数的
a=lambda num:str(num).zfill(2) #:前面是入参,后面是返回值 b=lambda num:num+1 print(a(1)) #lambda的调用 print(b(1)) #lambda的调用
res=map(lambda num:str(num).zfill(2),range(1,34))
print(list(res))
6. filter() 循环调用函数,帮筛选一些函数
def abc(num): if num%2==0: return True lambda num:num%2==0 res1 = list(map(abc,range(1,11))) res2 = list(filter(abc,range(1,11))) #r如果函数返回false,那么就过滤掉这个值是从你传入的值里过滤 print(res1) print(res2)
7.MD5加密
import hashlib s='admin' m = hashlib.md5(s.encode()) print(m.hexdigest()) # md5加密是不可逆的,加密之后不能进行解密 #解密之后:e10adc3949ba59abbe56e057f20f883e 123456 #解密之后:21232f297a57a5a743894a0e4a801fc3 admin #彩虹表:加密后密码对应的md5明文 m=hashlib.sha224(s.encode()) print(m) m=hashlib.sha384(s.encode()) print(m)
四、第三方模块和函数
1.第三方模块的三种安装方法
1).安装mysql:pip install pymysql 安装mysql (在cmd安装直接安装)
2).安装.whl文件: pip instal H:\软件安装包\软件安装包\PyMySQL-0.9.2-py2.py3-none-any.whl 绝对路径
3).安装.tar.gz文件: 直接在文件夹中cmd可直接进入对应目录,直接输入命令安装python setup.py install
2.Mysql使用
import pymysql #118.24.3.40 jxz 123456 3306 jxz conn=pymysql.connect(host='118.24.3.40',user='jxz', password='123456',port=3306,db='jxz',charset='utf8',autocommit=True) #autocommit自动提交 cur=conn.cursor(pymysql.cursors.DictCursor) #建立游标 #DictCursor字典返回的值key就是字段名 sql='select * from app_myuser' res=cur.execute(sql) #execute()只是执行sql,并不会返回结果 res1=cur.fetchall() #获取的结果放到元组中 sql='insert into app_myuser (username,passwd,is_admin) values ("nhy123","456789",1);' sql='insert into app_myuser (username,passwd,is_admin) values ("yaya123","123098",1);' #插入sql用双引号 sql1='select * from app_myuser where username="yaya123"' res=cur.execute(sql1) res1=cur.fetchall() #查询后面的数据不用加入参 print(res1) conn.commit() #插入数据之后,需要提交之后才能进入出具库表 name='yaya' sql2='select * from app_myuser where username="%s";'%name sql3='select * from app_myuser limit 5' #只取前5条数据 cur.execute(sql3) print(cur.fetchall()) #获取到所有的返回的数据 print(cur.fetchone()) #只取一条数据 cur.close() conn.close()