1、格式化字符串format和%的区别
基本语法:<模板字符串>.format(<逗号分隔的参数>)
例:要格式化的子字符串用{}表示,如下
MYSQL_URL ='mysql+pymysql://{}:{}@{}:3306/{}'.format(username, password, hostname, database)
优点
format无需关注数据类型,在%方法中'%s'只能替代字符串类型.
填充方式十分灵活,如单个参数可以多次输出,参数顺序可以不相同
2、单例模式实现
核心思想:python内建函数__new__主要是用来生成对象实例的,所以我们重写该类方法。判断类用没有实例属性,即判断有没有类实例,有的话直接返回,没有的话调用父类object的方法创建实例。注意需要传入类名
class SingleInstance(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, 'instance'):
cls.instance =super(SingleInstance, cls).__new__(cls)
return cls.instance
其他方式:
方式2:使用模块,将唯一的实例写到一个模块中,供其他模块调用
方式3:使用装饰器,维护一个字典,key值是类名cls,value值是类的实例。调用类创建类实例的时候判断维护的字典中是否有实例,有的话直接返回。没有创建后返回
3、工厂模式实现
4、元类详解
元类可以控制类的创建过程
拦截类的创建
修改类的定义
返回修改后的类
5、tcp-ip协议和http协议
HTTP协议:超文本传输协议。应用层协议
TCP/IP协议:传输层协议,主要解决数据如何在网络中进行传输
6、斐波那契数列实现
方式1:通过迭代器实现,迭代返回数列中的每个数字
方式2:直接返回一个列表,列表元素构成斐波那契数列
7、方法重载和方法重写
方法重写通常指的是子类重新实现继承的父类的方法,此时子类对象调用 的是子类的方法,与父类无关
方法重载指的是一个类定义了多个方法,每个方法的方法名字相同,但是参数不同。方法内可能实现不同、返回值不同。
8、常用正则【re模块】
贪婪匹配 <.*>
非贪婪匹配 <.*?>
re模块中的match从待匹配的字符串中第一个字母开始匹配
re模块中的reserch在待匹配的字符串中搜索匹配项
9、列表去重
方法一:使用set函数
方法2:列表推导式
L2 = [1,2,3,5,4,6,1,2,3,8,9,10]
L1 = []
[L1.append(i)for iin L2if inot in L1]
10、python内置函数
map
filter
reduce









网友评论