面向对象:
封装,继承,多态,抽象
1、可变与不可变类型
可变类型:dict、list
不可变类型:int、tuple、string、
2、深拷贝与浅拷贝
直接赋值,对列表的引用,原列表改变被赋值对象也改变
浅拷贝:copy,没有拷贝子对象,所以原始数据改变,子对象也会跟随改变
深拷贝:copy.deepcopy,包含原对象中的子对象,原始数据改变,被赋值对象不变
3、斐波那契数列
a = 0
b = 1
while < 100:
a, b = b, a+b
4、lambda函数
Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:
# 需求:将列表中的元素按照绝对值大小进行升序排列
list1=[3,5,-4,-1,0,-2,-6]
sorted(list1,key=lambdax:abs(x))
当然,也可以如下:
list1=[3,5,-4,-1,0,-2,-6]defget_abs(x):returnabs(x)sorted(list1,key=get_abs)
只不过这种方式的代码看起来不够Pythonic
5、python如何进行类型转换
int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串
6、删除列表中的重复原数
第一种:list(set(l))
第二种:
d = {}
for x in list:
d[x] = 1
mylist = list[d.keys()]
7、装饰器
闭包函数:1.函数内部定义的函数。2.引用了外部变量但不是全局变量
装饰器特点:
实质: 是一个函数
参数:是你要装饰的函数名(并非函数调用)
返回:是装饰完的函数名(也非函数调用)
作用:为已经存在的对象添加额外的功能
特点:不需要对对象做任何的代码上的变动
import time
def decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
func()
end_time = time.time()
print(end_time - start_time)
return wrapper
return decorator
@decorator
def func():
time.sleep(0.8)
func() # 函数调用
8、贪婪 与非贪婪匹配
<.*>:贪婪匹配,从头到尾匹配
<.*?>:非贪婪匹配,只匹配到第一个