函数定义装饰器既可以用在脚本里包含的普通函数上,也可以用在一个类包含的方法上。
类定义的装饰器可以用在脚本里包含的普通函数上,当用在另外一个类包含的方法上时可能会出现问题。
函数定义装饰器既可以用在脚本里包含的普通函数上,也可以用在一个类包含的方法上。
类定义的装饰器可以用在脚本里包含的普通函数上,当用在另外一个类包含的方法上时可能会出现问题。
如何定义装饰器:
1.装饰器的名称就是一个函数名称。
2.函数里边,它要修饰另外一个函数,所以装饰器函数的参数就是要修饰的另外一个函数。
3.在内部又定义一个函数,这个函数的功能是对传递进来的函数做一些装饰的。
IO密集型任务选择的多线程
计算密集型任务选择多进程
1.只有软件启动了,才存在进程。可以多开的软件,同时打开几个就有几个进程。每个进程是独立的。
2.线程是一个进程之内的多个可以并行的子任务。由于在一个进程之内,当前进程的地址空间,数据结构等都可以共享。
shelve模块:可以将多个对象储存到一个文件里边,并且用类似于python字典表的形式,给不同对象加一个键值, 这样在一个文件存多对象,存的过程和取的过程都可以通过键值来访问。
pickle模块:封装了一系列的方法接口,让我们很容易的将内存中原有的python类型的对象,把它序列化为字符串或本地的一个文件。
eval.() :内置函数,能将括号里传递的字符串,转化成python的表达式,例如:把字符串'[88,99]',转换成列表[88,99]
内存中数据会在断电时候清空,而有些数据需要长久保存,涉及到对象持久化
时间跨度处理(计算时间差,时间加减等):
datetime.timedelta(天数,秒)
d = datetime.datetime(2020,2,2,2,2)
nowdays = d +datetime.timedelta(days = 100)
import datetime
字符串与日期时间相互转换:strptime,strftime
字符串转换为时间:
s= '2020-02-02'
t = datetime.datetime.strptime(s,'%Y-%m-%d')
时间转换为字符串:
now = datetime.datetime.now()
txt = now.strftime(%Y/%m/%d)
1.针对序列的随机处理:
list = [0 ,1,2,3,4,5]
import random
从list中随机获得一个值:random.choice(list)
从list中随机获得特定数量的序列:random.sample(liat,3)
将list中元素顺序打乱: random.shuffle(list)
2.获得一个随机数值:
random.randint(1,10)随机产生一个整数
random.random()随机产生一个浮点型数
1.数值格式化,并定义为浮点型float
‘数值:{:a}’.format(a) 相当于 f'数值:{a:f}'
2.取整:
math.floor(123.9)=123,地板,向下取整
math.ceil(123.01)=124,天花板,向上取整
round(123,125,2)=123.13,保留2位小数,四舍五入
1.面向对象特征中的多态是什么: 属于同一类型的不同实例(例:都属于员工类型,实例可以是程序员,hr等等),对同一个消息做出不同的相应能力(例子:对于工作指令,程序员做开发,hr做面试)。
想学好面向对象三个步骤:
1.分析对象:万物皆对象,把关注的对象列出来,包括特征,行为,总结对象之间的关系(继承,聚合,复合等等)
2.类定义对象代码模版(蓝图):把分析的对象编程代码。
3.实例化(内存对象):描述具体的,实实在在的对象。
1.面向过程的核心思想:人围绕计算机,算法和数据结构是最重要的。
2.面向对象的核心思想:让计算机围绕着人的思维走。抛开代码,思考,尽量以人的思维去解决问题,然后考虑代码,代码是为了人的思想服务的,算法和数据结构不是最重要的。
3.面向对象分析:万物皆对象,都是由特征和行为两方面构成的。对象和对象之间是有关系的。
判断是否为大写:i.isupper()
判断是否为小写:i.islower()
在任何地方,函数后面如果加(),就代表立即执行这个函数。
map() ,可以称之为映射,基本原理是就是接收两个参数,第一个是要执行的函数,第二个是可迭代对象。
filter(),过滤,第一个参数是函数,第二个参数是元素集合,功能是从后边的多个元素中过滤出符合第一个函数条件的元素,重新放到一个集合里边。
1.python内部是怎么运行的?
使用了解释器,并且有一个虚拟机来托管程序的运行。
1.python中哪些对象可以使用for循环,或者可以遍历?
答:可迭代的对象,或者说实现了迭代器协议的对象,就支持遍历或循环。 支持迭代协议的对象有什么特征:包含一个__next__()的方法,用来移动指针到关联的下一个元素上。
2.迭代协议,内部有一个__next__()方法,作用是移动指针,能够获取到下一个元素。
3.可迭代对象,每次用__next__()获取下一个元素,占用内存小。而如f.readlines返回的是列表,先把所有元素放到一个列表里,然后for循环一个一个的读取,这样占用的内存大。
4. iter(a) = a 验证a是否符合迭代协议
若返回ture,则可以直接用__next__()依次读取 每个元素。
若返回false,则先生成迭代器对象:a = iter(a),然后再利用__next__()。
5.推导定义:39:00
seek() 方法用于移动文件读取指针到指定位置.