分享比较好用的函数
1.sys.args[] 外部输入和内部调用的桥梁,可以理解为:将输入的值看成是一个列表,[0]表示运行程序本身,[n],表示外部输入的第n个参数。如下:
import sys
data_type = sys.argv[1]
if data_type == '2':
number1 = sys.argv[2]
number2 = sys.argv[3]
print("两者之积是:", int(number1)*int(number2))
elif data_type == '1':
number1 = sys.argv[2]
number2 = sys.argv[3]
print('两者之和是:', int(number1)+int(number2))
运行结果如下:
2.表示时间的函数
关于时间经常用的是time模块
①time.time() 返回时间戳,单位是s,可以用来计算响应时间
import time
import requests
past = time.time()
json_data = {}
r = requests.post('www...',json = json_data)
now = time.time()
print('cost time',now-past)
运行结果:
②time.strftime(format) 当前时间格式化
import time
time_1 = time.strftime('%Y-%m-%d %H:%M:%S')
print('格式化时间',time_1)
运行后结果是:
3.with open ...as..读取文件,生成文件
因为我们要造大量json数据,用来发post请求,或者读取大量的json数据,所以想着用代码实现
①生成文件 a:append
import json
data = {'name': 'rong',
'age': 15,
'school': "初一"}
with open('..\\file\\test_1.txt',mode='a') as file:
file.write(json.dumps(data)) #写入字符串类型
运行结果
②读取文件
with open('..\\file\\test_1.txt',encoding='UTF-8') as f:
read_jsondata_file = json.load(f)
print(read_jsondata_file)
返回结果:
4. copy.deepcopy() 和copy.copy() 复制
背景:在造数据时,需要对原有的文件或者数据进行部分修改,然后保存为新的文件
这时候就会运用到copy.deepcopy()如下:
work_time= {"driverAccount": "11122233","endTime": time.strftime('%Y-%m-%d ')+'23:59:00',"workDate": time.strftime('%Y-%m-%d '),"startTime": time.strftime('%Y-%m-%d')+"10:00:00"}
new_work_time_list = []
for ix in range(5):
new_work_time = copy.deepcopy(work_time) #深度复制对象
new_work_time['driverAccount'] = str(int(work_time['driverAccount'])+ix)
print(new_work_time)
new_work_time_list.append(new_work_time)
运行后:
再说下copy.deepcopy() 和copy.copy() 这俩货有区别
同:会另外生成一个对象
异:
copy.deepcopy() 深复制:改变嵌套在里面的原始数据,不会对新生成对象产生影响
copy.copy()浅复制:改变原始数据,新生成的对象数据会随着改变
如下:
import copy
origin = [1, 2, [3, 4]]
cop1 = copy.copy(origin)
cop2 = copy.deepcopy(origin)
origin[2][0] = "hey!"
print('cop1',cop1)
print('cop2',cop2)
运行结果:
5.参数介绍
参数大体分为位置参数、关键字参数、默认参数、可变参数
位置参数:我们一般封装函数设置的,位置参数就是一定要输入的参数
关键字参数:以键和值的方式指定值,可以清除参数的顺序需求,一般在传值的时候会使用
默认参数:就是我们在写函数时,会写一个默认值,如果在传参的时候没有给这个参数赋值,这个参数就会使用这个默认值。可传可不传,如果不传在函数就使用默认值
可变参数:可传可不传,如果不传,函数不会显示。主要分为两种:*args:表示将标准调用剩下的值,以元组的形式保存,**kwags:表示,将关键字调用剩下的值,以字典的形式保存
这里最重要的是:位置参数,默认参数,可变参数的混合使用,注意关键字参数在传值的时候不能和**kwargs参数一起使用。使用方法记住使用顺序和例子就可以:
def foo(x, *args, y=None, **z):
print(x)
print(z)
print(args)
if y is None:
print(y)
elif y == '1':
print(y)
if __name__ == '__main__':
foo(1, 7, 8, 9, y=1, z='z')
推荐一个关于参数很好的博文:https://www.cnblogs.com/bingabcd/p/6671368.html