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