python--关键字参数/可变参数--内置函数--时间模块--常用模块--(day4)
知识点一、内置函数
1 def send_msm2(*args): #可变参数,参数组 2 print('phone',args) 3 send_msm2()#返回值为元组
1 def send_msm2(*args): #可变参数,参数组 2 print('phone',args) 3 send_msm2(110, 113, 333)
-
#参数组不能用word= "haha "这样的形式,直接传
2 def say(word,*args): 3 print(word) 4 print(args) 5 say('nihao',34444,666)
-
#关键字参数 传参格式 key = value
1 def kwfun(**kwargs): 2 print(kwargs) 3 kwfun()#空字典
1 def kwfun(**kwargs): 2 print(kwargs) 3 kwfun()#空字典 4 kwfun('222')
1 def kwfun(**kwargs): 2 print(kwargs) 3 kwfun()#空字典 4 kwfun(age = '123') 5 kwfun(age = '123',name = 'xiaohei')
1 def t1(word,country = 'china',*args,**kwargs):#(必填参数,默认值参数,参数组,关键字参数)必须定义这4个类型参数,顺序要固定 2 print(word) 3 print(country) 4 print(args)#没有认领的参数都给参数组 5 6 print(kwargs) 7 t1('hah','japan',134,333,na'ddeme = ',age = 44)
1 def redis(ip,pwd,post = 5666): 2 print('连接redis') 3 print(ip) 4 print(post) 5 print(pwd) 6 print('='*10) 7 redis('127.0.0.01','23344')
1 def redis(ip,pwd,post = 5666): 2 print('连接redis') 3 print(ip) 4 print(post) 5 print(pwd) 6 print('='*10) 7 redis_info = ('127.0.0.1','12356',777) 8 redis(redis_info[0],redis_info[1],redis_info[2]) 9 redis(*redis_info)#拆包,自动把元组拆开,意义同前两条代码
1 def redis(ip,pwd,post = 5666): 2 3 print('连接redis') 4 print(ip) 5 print(post) 6 print(pwd) 7 print('='*10) 8 redis_info2 = {'ip':'127.0.0.1','pwd' : '5667','post' : 444} 9 redis(redis_info2['ip'],redis_info2['pwd'],redis_info2['post']) 10 redis(**redis_info2)#可替代上两条代码
知识点二、内置函数
1 #coding=utf-8 2 # input() 3 # print() 4 # len() 5 # type() 6 # str() 7 # tuple() 8 # set() 9 # dict() 10 # list() 11 l='asdfgwert3r' 12 # sorted(l) #排序 13 # print(all([1,2,3,4,'']))#如果li 14 # print(any([0,0,0,1]))#判断可迭代的对 15 # print(bin(10))#十进制转二进制 16 # print(bool(0))#把一个对象转换成布尔类型 17 # print(chr(66))#打印数字对应的ascii 18 # print(ord('B'))#打印字符串对应的ascii 19 # print(dict(a=1,b=2))#转换字典 20 #s='a' 21 # print(dir(s))#打印传入对象的可调用方法 22 s = '[1,2,3]' 23 24 print(eval(s))#执行python代码,只能执行简单的,定义数据类型和运算 ,1+1,定义字典
1 # print(exec('def a():pass'))#执行python代码 2 # print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法 3 # print(map(lambda x:x>5,[1,2,3,4,5,6])) 4 #print(max([12,3,4,5]))#取最大值 5 #min([12,3,4,5]) 6 #print(oct(9))#把数字转换成8进制 7 #print(round(3.1415926,3))#取几位小数 8 #print(eval('[]'))#执行python代码,只能执行简单的,定义数据类型和运算 9 # print(exec('def a():pass'))#执行python代码 10 # print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法 11 # print(map(lambda x:x>5,[1,2,3,4,5,6])) 12 #zip()
1 # func_str = ''' 2 # import time 3 # def fun(): 4 # return 'func_name' 5 # ''' 6 # exec(func_str) 7 # result = fun() 8 9 #print(result)
1 # f = open('作业.py',encoding='utf-8') 2 # result = f.read() 3 # exec(result)
1 # l = [1,2,3,4,5,6,7,8,9,10] 2 # 3 # def t(num): 4 # if num % 2 == 0: 5 # return True 6 7 #l2 = list( filter(t,l) ) 8 # l3 = list( map(t,l) ) 9 # print(l3) 10 # print(l2)
1 # l1=[1,2,3,4] 2 # l2=['a','b','c','d'] 3 # l3=['a','b','c','d','f'] 4 # for k1,k2,k3 in zip(l1,l2,l3): 5 # print(k1,k2,k3)
知识点三、模块
1、一个模块就是一个python文件
2、自己写的python文件
3、标准模块,python自带的
4、第三方模块
安装:
pip install xxx #安装
pip uninstall xx #卸载
pip install xx -U #更新
pip freeze > 第三方模块.txt #导出已经安装的第三放模块
pip install -r 第三方模块.txt #从文件里面读模块,批量安装
pip问题:
1、pip命令不存在,把python安装目录下的Scripts加入环境变量
2、pip 的时候没用python目录下的pip,使用where命令知道其他的pip,改为其他名字
手动安装:
1、whl结尾的
pip install /Users/PyMySQL-0.9.3-py2.py3-none-any.whl #后面whl文件的绝对路径
2、tar.gz结尾的
1、解压
2、在命令行里面进入到解压的目录下
3、执行python setup.py install
如果电脑上有多个版本的python
1、python3 -m pip install xpinyin
python2 -m pip install xpinyin
2、找到各个版本的下面的scripts目录,pip各自修改为 pip2 /pip3
导入模块的顺序
1、当前目录下找
2、sys.path
导入模块的实质是
import模块的实质就是把该模块从上到下执行一遍
os模块
1 import os 2 os.remove() 3 os.rename() 4 os.mkdir()#创建文件夹,单层 5 os.makedirs()#创建文件夹,创建多层目录 6 7 os.listdir(r'Documents\Tencent Files\2273747892\FileRecv\day4')#加r不用转译 8 9 files = os.listdir(r'C:\Users\yangmingyue\Documents\Tencent Files\2273747892\FileRecv\day4\day4') 10 print(files) 11 print(os.path.isdir(r'C:\Users\yangmingyue\Documents\Tencent Files\2273747892\FileRecv\day4\day4'))#判断是不是文件夹 12 print(os.path.isfile(r'C:\Users\yangmingyue\Documents\Tencent Files\2273747892\FileRecv\day4\day4'))#判断是不是文件 13 os.chdir(r'C:\Users\yangmingyue\Documents\Tencent Files\2273747892\FileRecv\day4\day4')#进入文件 14 print(os.listdir())#获取当前文件目录 15 print(os.getcwd())#获取当前路径
1 #判断文件夹还是文件 2 # name = '.mp4' 3 # def search_file(path,name): 4 # for cur_dir,dirs,files in os.walk(path): 5 # for file in files: 6 # if name in file: 7 # abs_path = os.path.join(cur_dir,file) 8 # print('找到%s文件,路径是%s'%(file,abs_path)) 9 # 10 # search_file('/',name)
1 result = os.system('ifconfig') #执行操作系统命令,帮你执行命令,拿不到执行命令的结果 2 #result = os.popen('ifconfig').read()#执行操作系统命令,可以拿到结果 3 print('result...',result) 4 #print(os.getcwd())#获取当前路径 5 # print(os.path.getsize('products.json'))#获取文件大小 6 # print(os.path.exists('products.json'))#是否存在 7 # print(os.path.getatime('products.json'))#最近一次的访问时间 8 # print(os.path.getctime('products.json'))#createtime创建时间 9 # print(os.path.getmtime('products.json'))#modiyftime修改时间 10 # print(os.path.split(r'/Users/nhy/PycharmProjects/mjz/day4/products.json'))#分割文件路径和文件名 11 #print(os.path.dirname(r'/Users/nhy/PycharmProjects/mjz/day4/os模块.py'))#获取父目录 12 13 #print(os.path.abspath(__file__))#根据相对路径获取绝对路径 .代表当前目录,..代表上一级目录 14 15 #os.rmdir()#删除空文件夹 16 #os.removedirs()#删除空文件夹
知识点四、时间模块
1 import time,datetime 2 #2019-10-19 13:23:38 3 #13245232453 4 #时间戳 一串数字 5 #从计算机诞生那一秒到现在过了多少秒 6 7 # print(time.time()) #获取前时间戳 8 # print(time.strftime('%Y-%m-%d %H:%M:%S'))#当前格式化好的时间
-
#时间元组
-
#1、时间戳转格式化的时间
1 timestamp = 1571476513 2 # time_tuple = time.gmtime(timestamp)#以标准时区的时间转换 3 time_tuple = time.localtime(timestamp)#以当前时区的时间转换 4 result = time.strftime('%Y-%m-%d %H:%M:%S',time_tuple)#格式化时间 5 print(result) 6 7 def timestamp_to_str(timestamp=None,format='%Y-%m-%d %H:%M:%S'): 8 '''时间戳转格式化好的时间,默认返回当前时间''' 9 if timestamp: 10 time_tuple = time.localtime(timestamp) # 以当前时区的时间转换 11 result = time.strftime(format,time_tuple) 12 else: 13 result = time.strftime(format) 14 return result 15 16 def str_to_timestamp(string=None,format='%Y-%m-%d %H:%M:%S'): 17 '''格式化好的字符串转时间戳,默认返回当前时间戳''' 18 if string: 19 time_tuple = time.strptime(string, format) # 格式化好的时间,转时间元组的 20 result = time.mktime(time_tuple) # 把时间元组转成时间戳 21 else: 22 result = time.time() 23 return int(result) 24 25 # s = '2019-10-19 17:15:13' 26 # time_tuple = time.strptime(s,'%Y-%m-%d %H:%M:%S')#格式化好的时间,转时间元组的 27 # result = time.mktime(time_tuple)#把时间元组转成时间戳 28 # print(result) 29 30 t1 = str_to_timestamp() + 60*60*24*3
知识点五、创造日志
1 def timestamp_to_str(timestamp=None,format='%Y-%m-%d %H:%M:%S'): 2 '''时间戳转格式化好的时间,如果没有传时间戳,就获取当前的格式化时间''' 3 if timestamp: 4 time_tuple = time.localtime(timestamp) #把时间戳转成时间元组 5 result = time.strftime(format,time_tuple) #把时间元组转成格式化好的时间 6 return result 7 else: 8 return time.strftime(format) 9 10 11 import time,os,random 12 l = ['ios','android','nginx','tomcat','python','blog','apache','mysql','redis'] 13 for i in l: 14 p = os.path.join('logs',i) 15 os.makedirs(p) 16 for j in range(30): 17 t = int(time.time())-86400*j 18 time_str = timestamp_to_str(t,'%Y-%m-%d') 19 log_name = '%s_%s.log'%(i,time_str) 20 abs_file_path = os.path.join('logs',i,log_name) 21 fw = open(abs_file_path, 'w', encoding='utf-8') 22 if random.randint(1,10)%2==0: 23 fw.write('胜多负少防守打法双方都') 24 fw.close()
运行结果就是:当前目录下生成log文件