Python细节
文章平均质量分 56
Python Summary
chuntian_tester
路漫漫其修远兮,吾将上下而求索。
展开
-
virtualenv+pipenv虚拟环境管理
虚拟环境主要是为了给不同的工程创建相互独立的运行环境;在虚拟环境下,每个工程都有自己的依赖包,而与其他工程隔离;不同的虚拟环境中同一个包可以有不同的版本,并且虚拟环境的数量没有限制,我们可以使用工具virtualenv或者pipenv来创建虚拟环境。virtualenva的安装使用-windows1.安装virtualenvpip install virtualenv2.安装虚拟环境管理包virtualenvpip install virtualenvwrapper(win-->v原创 2022-02-15 21:32:31 · 280 阅读 · 0 评论 -
元类type以及利用元类实现模型类ORM
Python 中的内置元类为:typetype:是元类,所有的类都是通过type创建出来的。object:顶层的基类,所有类的继承的顶层父类都是boject.可通过class来定义类,也可以通过type来定义类。type(name,bases,attr_dict)调用type(): name:指定类名,将成为该类的name属性。 bases:指定继承类的基类元祖,将成为该类的bases属性。 attr_dict:指定包含类主体定义的名称空......原创 2022-02-15 13:08:30 · 631 阅读 · 0 评论 -
描述器实现ORM模型
访问或者修改描述器对象的属性时无法触发__setattr__等方法,只会触发描述器类内部的__set__,__get__,__delete__方法.ORM模型:类名对应表名,对象对应的数据行,类属性对应数据行的各字段,有几个表字段,就绑定几个类属性;往表中增加数据就是创建对象,每创建一个对象,就是增加一行数据记录。ORM框架的功能: 1.建立模型类和表之间的对应关系,允许我们通过面向对象的方式操作数据库。 2.根据设计的模型类生成数据库中的表格。 ......原创 2022-02-13 23:46:03 · 724 阅读 · 0 评论 -
自定义属性访问__getattribute__/设置__setattr__/删除__delattr__方法
目录1.object.__getattr__当属性查找没有找到的时候(报错AttriErro)时,会触发此方法2.object.__getattribute__当查找属性时,第一时间会调用此方法3.object.__setattr__设置属性时,会触发此方法设置属性4.object.__delattr__ 在del 对象属性时,会触发此方法定义魔术方法来自定义类实例的属性访问。总结:当父类的方法不能满......原创 2022-02-13 21:14:09 · 532 阅读 · 0 评论 -
数据和自省__dict__属性和__slots__属性
类里定义的变量叫类属性,类里定义的方法叫类方法;类属性分:1.公有属性:普通属性2.私有属性:以“_”或"__"开头的属性称为私有属性,私有属性也可以被继承和访问。例如:class Info(object): _name = '春田' __age = 4if __name__ == '__main__': i = Info() print(i._name) # 输出:春田 print(Info._name)原创 2022-02-13 18:19:41 · 634 阅读 · 0 评论 -
通过自定义__enter__和__exit__方法+with实现文件和数据库的上下文管理器
with open() as f:方法内部其实就是对open()函数进行了二次封装,内部实现了__enter__方法和__exit__方法。我们也可以自己实现这2个方法来自定义实现文件的上下文管理器。# 使用with实现自定义的上下文管理器class MyOpen(object): """ 实现文件操作上下文管理器 必须实现__enter__方法和__exit__方法 with open('./user_info.txt','r',encoding='utf8'.原创 2022-02-13 14:03:08 · 620 阅读 · 0 评论 -
魔术方法及单例模式
魔术方法(魔法方法,特殊方法):魔术方法都是Python内部定义的,不用自己去定义的类似__init__()这种双下划线开头或结尾的方法。一。__new__方法和__init__:__new__方法在父类object中已经实现,若子类中再出现,就属于重写父类中的方法;new方法是用来创建对象的,应该返回一个对象,若不return一个对象,init方法无法执行,没有对象可初始化。创建对象是Python中内置实现的,我们无法实现,此时重写new方法时,可以直接通过: 1.super()原创 2022-02-12 21:27:55 · 610 阅读 · 0 评论 -
装饰器实现
1.实现一个装饰器2.有参数的装饰器3.通用装饰器4.类装饰器5.装饰器装饰类6.内置装饰器原创 2022-02-12 17:45:51 · 626 阅读 · 0 评论 -
兔子模型和斐波那契数列
# 斐波那契数列即是兔子模型[1,1,2,3,5,8,13,21...]def fib(n): if n == 1 or n == 2: return 1 else: return fib(n - 1) + fib(n - 2)# 第10个月有多少兔子?print('第十个月总共有', fib(10), '只兔子') # 第十个月总共有 55 只兔子fib_list = []for i in range(1, 10): fib_num.原创 2022-02-12 12:01:27 · 419 阅读 · 0 评论 -
匿名函数lambda和偏函数partil
匿名函数使用:1.lambda函数的调用方式:# 匿名函数调用方式1res = lambda x, y: x + yprint("res的值为:", res(1, 3)) # 输出:res的值为: 4# 匿名函数调用方式2res1 = (lambda x, y: x + y)(2, 4)print("res1的值为:", res1) # res1的值为: 62.匿名函数结合列表推导式:li4 = [i*2 for i in range(10) if i > 5]pr原创 2022-02-12 11:06:38 · 194 阅读 · 0 评论 -
python各数据类型特点
python3种数据类型: 1.数值:1,2,3 2.序列:字符串,列表,元祖 3.散列:字典,集合。⭐️内部元素是无序的。一。元组与列表list与tuple(列表与元组)性能:pip install ipython(ipython可以分析函数的执行时间)ipython对比得出,在内存中创建元组比创建列表快了很多。 所以,数据会增减变化的用列表,不会变化的尽量用元组。命名元祖:二。字典和集合{ }字典和集......原创 2022-02-10 22:53:17 · 3234 阅读 · 0 评论