1.函数返回值
函数如果返回多个值的话,他会把这几个参数值,都放到一个元组里面
函数若返回多个值的话,可以用多个变量来接收即可
1 def say():
2 num1 = 1
3 num2 = 2
4 num3 = 3
5 return num1,num2,num3
6 res = say()
7 print(res)
8 res1,res2,res3= say()
9 print(res1,res2,res3)
2.匿名函数:
这个函数功能很简单,只用一次。 lambda定义匿名函数
1 res = lambda x:x+1 #前面X代表函数返回值,后面x+1代表函数体
2 print(res(1))
3.列表生成器
1 import random
2 red_num= random.sample(range(1,34),6)
3 #外面是小括号的话,他就不是一个list了,他是一个生成器
4 # 生成器比list要节约内存,他是每次循环的时候,会根据规则计算一个元素,放到内存里面。
5 # list他是把所有的元素都放在内存里面。
6 l = [i for i in range(1,101,2)]#生成100以内的奇数
7 new_num = [str(num).zfill(2)for num in red_num] #列表生成式
8 print(new_num)
9 print(l)
10
11 #生成器例子
12 l = (i for i in range(1,101,2))
13 for l2 in l:
14 print(l2)
15 print(l.__next__)#表示每次打印一个值
16
17 # #下面的这一串与上面的【列表生成式】的作用一样
18 for num in red_num:
19 temp = str(num).zfill(2)
20 new_num.append(temp)
21 print(new_num)
22
23
24 # #练习一(列表生成式)
25 a = 5
26 b = 4
27 if a>b:
28 c= a
29 else:
30 c= b
31
32 c = a if a>b else b #三元表达式
4.字典排序
1 d = {'a':4,'c':2,'b':3}
2
3 #字典是无序,直接对字典排序是不存在的
4 print(d.items())
5 print(sorted(d.items()))#sorted帮我们循环调用生成了一个二维数组,默认是按照key排序的
6 res=sorted(d.items(),key=lambda x:x[0])#根据key排序
7 res1=sorted(d.items(),key=lambda x:x[1])#根据value排序
8 print(res)
9 print(res1)
10
11 for k,v in res:#循环二维数组
12 print(k,v)
13
14 l =[
15 [1,2,3,4],
16 [1,2,4,3]
17 ]
18 for a,b,c,d in l:
19 print(a,b,c,d)
20
21 def my(name:str):
22 print(name)
23 my(['123','456'])
5.常用标准模块
1 import os
2 print(os.getcwd())#取当前工作目录
3 os.chmod("D:\syz1\T_code1\day6",2)#给文件/目录加权限,对windows下面不好使用
4 # 1 执行
5 # 2 写
6 # 4 读
7 # chmod 加权限
8 print(os.chdir("../"))#更改当前目录
9 print(os.curdir)#当前目录
10 print(os.pardir)#父目录
11
12 print(os.makedirs("hh/h1"))#递归创建文件夹,父目录不存在时创建父目录
13 print(os.mkdir("yjy/python"))#创建文件夹
14 # makedirs创建文件夹的时候,如果父目录不存在会自动帮你创建父目录
15 #mkdir创建文件夹的时候,如果父目录不存在会报错
16
17
18 print(os.removedirs("/usr/hehe/hehe1"))#递归删除空目录
19 print(os.rmdir("test1"))#删除指定的文件夹
20 #只能删除空目录
21
22 print(os.remove("test1"))#删除文件
23 print(os.listdir('.'))#列出一个目录下的所有文件
24 os.rename("test","test1")#重命名
25 print(os.stat("len_os.py"))#获取文件信息
26 print(os.sep)#当前操作系统的路径分隔符
27 print(os.linesep)#当前操作系统的换行符
28 print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
29 print(os.environ)#当前系统的环境变量
30 print(os.name)#当前系统名称 windows系统都是nt,linux都是posix
31 res=os.system('ipconfig') #执行操作系统命令的os.system('dir'),但是获取不到结果
32 print(res) #0代表是不是执行成功,0代表成功 显示乱码
33 res = os.popen('ipconfig').read()#执行操作系统命令,可以获取到命令执行结果,但是只能获取静态命令(top -n l 一秒去取一次) os.popen('top -n 1').read(),动态命令不可以(top)
34 print(res)
35
36 print(__file__)#获取到当前文件的绝对路径
37 print(os.path.abspath(__file__))#获取绝对路径
38 print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名
39
40 print(os.path.dirname("d:\\syz\\T_code1"))#获取父目录
41 print(os.path.basename("d:\\syz\\T_code1"))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名
42 print(os.path.exists("/usr/local"))#目录/文件是否存在
43 print(os.path.isabs("."))#判断是否是绝对路径
44 print(os.path.isfile("/usr/local"))#判断是否是一个文件,1.文件要存在2.必须是一个文件
45 print(os.path.isdir("d:\\syz"))#是否是一个路径,目录是否存在
46 print(os.path.getsize('x.py'))#获取文件大小,可以限制上传文件的大小
47 print(os.path.join("root",'hehe','a.sql'))#拼接成一个路径
48
49 for abs_path,dir,file in os.walk('D:\syz1\T_code1\day6'):#获取目录
50 print(abs_path,dir,file)
51 # abs_path当前循环的绝对路径
52 # dir 目录下面所有的文件夹[]
53 # file目录下面所有文件[]
6.导入模块的顺序
1 # python导入模块的时候顺序:
2 # 1.从当前目录下面找需要导入的Python文件。
3 # 2.从Python的环境变量中找 sys.path(方法二:把Python文件放到C:\\Miniconda3\\DLLs目录下面)
4 # 导入模块的实质:
5 # 就是把Python文件从头到尾执行一遍
6
7
8 import sys
9 print(sys.platform)#判断操作系统
10 print(sys.path)#python的安装目录环境变量
11 print()
12 print(sys.argv)#用来获取命令行里面运行Python文件的时候传入的参数
13
14 #导入模块的两种方法
15
16 #导入当前目录下面的模块,当前目录下面创建一个y python文件
17 #方法一
18 import y
19 print(y.name)
20 y.my()
21
22 #方法二
23 from y import my,name
24 my()
25 print(name)
26 #方法三,但是不建议使用,因为方法比较多的时候不知道调用的哪个
27 from yimport * #导入所有的
28 my()
29 print(name)
30
31 #导入其他目录下面的文件
32 #如果要导入其他目录下的文件,就把这个目录加入到环境变量里面
33 sys.path.append(r'D:\syz1\T_code1\day5')#添加到环境变量里面,这个位置默认添加到最后一位
34 sys.path.insert(0,r'D:\syz1\T_code1\day5')#添加到环境变量里面第一位
35 print(sys.path)
36 import my_random #导入day5目录下面的my_random.py文件
下面是一个练习题:
1 #把双数日期的日志,里面给随便写点东西
2 # 1.获取到log目录下面的所有文件 os.walk()
3 # 2.根据文件名来判断,是否是双数日期,分割字符串,取到日期
4 # 3.取到值之后12%2==0
5 # 4.打开这个文件open(),最后写入文件
6
7 import os
8 for abs_path,dir,file in os.walk('D:\syz1\T_code1\day6\logs'):#获取目录
9 # print(abs_path,dir,file)
10 for f in file:
11 print(f)
12 day = f.split('.')[0].split('-')[2]
13 if int(day)%2==0:
14 file_name = os.path.join(abs_path,f)#拼接绝对路径
15 open(file_name,'a+',encoding='utf-8').write('写东西')
7.sys.argv 的作用是用来获取命令行里面运行Python文件的时候传入的参数,例子
1 #在命令里面运行的。如:Terminal里面运行
2 import sys,os
3 command = sys.argv
4 print(command)
5 if len(command)>1:
6 cmd1 = command[1] #因为sys.argv第一个文件名,第二个才是参数
7 if cmd1 =='--help':
8 print('这个是帮助文档''这个Python文件是用来说明sys.argv的作用')
9 elif cmd1 =='os':
10 print('当前的操作系统是%s'%sys.platform)
11 else:
12 print('输入命令有误')
13 else:
14 print('运行Python文件的时候要传入一个参数''e.g''python xx.py install')
在Terminal里面运行命令如:python 文件名.py --help 测试
8.时间模块
1 import time
2 #1.时间戳 从Unix元年到现在过了多少秒
3 #2.格式化好的时间
4
5
6 print(time.time())#获取当前时间戳
7 time.sleep(10)#停留多少秒之后在运行下面的
8 print('嘿嘿')
9 today = time.strftime('%Y-%M-%d %H:%M:%S')#获取当前日期
10 today1 = time.strftime('%Y%M%d%H%M%S')#这里的写法灵活
11 print(today)
12 print(today1)
13
14 print(time.gmtime())#默认取的的是标准时区的时间
15 print(time.localtime())#获取当前时区的时间
16
17 # 时间戳转换时间元组
18 # 1.时间戳转成时间元组time.localtime()
19 # 2.再把时间园区转化成格式化的时间
20 s = time.localtime(1514198608)
21 print(time.strftime('%Y-%M-%d %H:%M:%S',s))
22
23 # 时间戳转换时间元组 函数写法
24 def timestamp_to_format(timestamp = None,format ='%Y-%M-%d %H:%M:%S'):
25 # 1.默认返回当前格式化好的时间
26 # 2.传入时间戳的话,把时间戳转换成格式化好的时间,返回
27 if timestamp:
28 time_tuple=time.localtime(timestamp)
29 res=time.strftime(format,time_tuple)
30 else:
31 res = time.strftime(format)
32 return res
33 print(timestamp_to_format())
34 print(timestamp_to_format(1914198608,'%Y-%m'))
35
36 #2018-4-21怎么把格式化的时间转为时间元组的
37
38 print(time.strptime('2017-09-09','%Y-%m-%d'))#怎么把格式化的时间转为时间元组的
39 s = time.mktime(time.strptime('2017-09-09','%Y-%m-%d'))#把时间元组转成时间戳
40 print(s)
41
42
43 def strToTimestamp(str=None,format='%Y%m%d%H%M%S'):
44 #20180421165643
45 #默认返回当前时间戳
46 if str:#如果传了时间的话
47 tp = time.strptime(str,format)#转成时间元组
48 res = time.mktime(tp)#再转成时间戳
49 else:
50 res = time.time()#默认取当前的时间戳
51
52 return int(res)
53 print(strToTimestamp())
54 print(strToTimestamp('20180421165643'))
55 print(strToTimestamp('2018-09-09','%Y-%m-%d'))
56
57 import datetime
58 datetime.datetime.today()#获取当前时间,精确到秒
59 datetime.date.today()#精确到天
60 res = datetime.date.today()+datetime.timedelta(days=-5)#获取到5天前的时间
61 res = datetime.date.today()+datetime.timedelta(days=1,minutes=5,seconds=5,weeks=5)#5秒后
62 print(res.strftime('%Y-%m-%d'))
9.加密模块
1 import hashlib
2
3 m = hashlib.md5()
4 #bytes
5 passwd = 'yjy123'
6 print(passwd.encode())#把字符串转成bytes类型
7 m.update(passwd.encode())#不能直接对字符串加密,要先把字符串转成bytes类型
8 print(m.hexdigest())
9
10 #md5加密是不可逆的
11
12 #加密md5函数
13 def my_md5(str):
14 new_str = str.encode()#把字符串转成bytes类型
15 # new_str = b'%s'%str#把字符串转成bytes类型
16 m = hashlib.md5() #实例化md5对象
17 m.update(new_str) #加密
18 return m.hexdigest()#获取结果返回
19
20 #另外一种加密方式,加密的更长
21 m= hashlib.sha256()
22 m.update(passwd.encode())
23 print(m.hexdigest)
10,操作mysql
1 import pymysql
2 #1.连上数据库 账号,密码 ip 端口号 数据库
3 #2,建立游标
4 #3.执行sql
5 #4.获取结果
6 #5.关闭游标
7 #6.链接关闭
8 con = pymysql.connect(
9 host='192.168.174.128',
10 user='root',
11 passwd = '123456',
12 port = 3306,
13 db ='zuoye',
14 charset = 'utf8'
15 #port必须写int类型,charset这里必须写utf8
16 )
17 cur = con.cursor()#建立游标
18 cur.execute('insert into students(Id,Name,Sex,age,class,Addr) values(12,"hh","女",18,"胡巴","山东");')
19 #delete update insert 语句必须得commit才可以
20 con.commit()#必须得commit才可以
21 cur.execute('select * from students;')#执行sql语句
22 res = cur.fetchall()#获取所有返回的结果
23 print(res)
24 cur.close()#关闭游标
25 con.close()#关闭链接
定义函数mysql,基本不用,以后都是用封装函数
1 def my_db(host,user,passwd,db,sql,port=3306,charset='utf8'):
2 import pymysql
3 coon = pymysql.connect(user = user,
4 host = host,
5 port= port,
6 passwd = passwd,
7 db=db,
8 charset=charset
9 )
10
11 cur = coon.cursor()#建立游标
12 cur.execute(sql)#执行sql
13 if sql.strip()[:6].upper()=='SELECT':
14 res = cur.fetchall()
15 else:
16 coon.commit()
17 res = 'ok'
18 cur.close()
19 coon.close()
20 return res
11.往excel里面写内容
1 import xlwt
2
3 book = xlwt.Workbook()#新建一个excel
4 sheet = book.add_sheet('sheet1')#加sheet页
5 sheet.write(0,0,'姓名')#行,列,写入的内容
6 sheet.write(0,1,'年龄')
7 sheet.write(0,2,'性别')
8 book.save('stu.xls')#结尾一定要用.xls