摘要:
之前项目需求,需要通过反射获取函数的参数,python中可以通过函数签名(signature)来实现。 首先需要了解函数参数的类型,Python的参数类型一共有5种:POSITIONAL_OR_KEYWORD、VAR_POSITIONAL、VAR_KEYWORD、KEYWORD_ONLY、POSIT 阅读全文
摘要:
前言 随着项目业务需求的不断变更,数据库的表结构修改难以避免,此时就需要对数据库的修改加以记录和控制,便于项目的版本管理和随意的升级和降级。 Alembic就可以很好的解决这个问题。Alembic是SQLAlchemy作者开发的Python数据库版本管理工具。 安装 通过pip命令安装,如果使用虚拟 阅读全文
摘要:
资料来自网络,收集整理做个备忘 1. 安装Python 2. 安装$$ 3. 创建配置文件 4. 编辑配置文件 配置文件内容 其中 server:服务器的IP server_port:服务器端口 local_port:本地端端口 password:用来加密的密码 timeout:超时时间(秒) me 阅读全文
摘要:
Python 3.4 之后支持原生的虚拟环境配置(3.3的虚拟环境不支持pip),把配置过程记录一下备忘。 1.创建虚拟环境 在控制台中,使用cd目录,切换到需要创建虚拟环境的目录。 使用如下命令,在当前目录创建虚拟环境。 如 创建成功后,在目录下,有如下文件: Windows: 2.激活虚拟环境 阅读全文
摘要:
特性(property) 特性是对类的一个特定属性进行拦截,在操作这个属性时,执行特定的函数,对属性的操作进行拦截。 特性的实现 特性使用property类来实现,也可以使用property装饰器实现,二者本质是一样的。 property类的__init__函数接收4个参数,来实现属性的获取、赋值、 阅读全文
摘要:
__getattr____getattr__在当前主流的Python版本中都可用,重载__getattr__方法对类及其实例未定义的属性有效。也就属性是说,如果访问的属性存在,就不会调用__getattr__方法。这个属性的存在,包括类属性和实例属性。 Python官方文档的定义 Called wh 阅读全文
摘要:
在Python的新式类中,方法解析顺序并非是广度优先的算法,而是采用C3算法,只是在某些情况下,C3算法的结果恰巧符合广度优先算法的结果。 可以通过代码来验证下: 从第一段代码的运行结果来看,与广度优先的算法结果恰巧相同,但也只是恰巧相同,不等于就是广度优先的算法。 通过对代码进行修改可以证实: 将 阅读全文
摘要:
1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性;反之,即不由任意内置类型派生出的类,则称之为“经典类”。 “新式类”和“经典类”的区分在Python 3之后就已经不存在,在Pytho 阅读全文
摘要:
Python的类和类实例都是可变对象,可以随时给属性赋值,并且在原处修改。 在对类属性进行修改时需要特别小心,因为所有的类实例都继承共享类属性,除非实例本身存在和类属性同名的属性。对类属性进行修改,会影响到所有由这个类生成的实例。 运行结果: 代码中,将类属性CA.cls_pre 重新赋值为 'cc 阅读全文
摘要:
Python基础知识,自己写一写比较不容易忘 Python的每个对象都分为可变和不可变,主要的核心类型中,数字、字符串、元组是不可变的,列表、字典是可变的。 对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创建的对象(如果没有其他变量引用原有对象的话(即引用 阅读全文