随笔分类 - Python
摘要:装饰器的作用 当我们需要为函数拓展新的功能,但是又不能修改函数的内部结构时,就可以通过装饰器来完成。通过装饰器为函数拓展功能符合“对于扩展是开放的,对于修改是封闭的”这一开闭原则。下面我们将通过六个步骤了解如何使用装饰器。 步骤一 我们先定义一个函数f,现在我们需要为其添加运行时打印出当前时间的功能
阅读全文
摘要:Python中的作用域 在一般编程语言中,作用域从小到大有块级、函数、类、模块、包五个级别。但是在Python中没有块级作用域的存在,比如for语句中的代码的作用域就和for自身所在的作用域同级(if、with等语句中的代码相同)。 下例在全局作用域中的print函数就可以读取到if语句中的变量a:
阅读全文
摘要:枚举的结构 from enum import Enum class Color(Enum): RED = 1 YELLOW = 2 BLUE = 3 print(Color.RED) # Color.RED 从enum导入Enum,并让自定义的枚举类继承Enum 枚举类内的标签最好用大写字母来表示常
阅读全文
摘要:问题引出 一般情况下类方法的调用是通过先创建类对象再通过a.b()的方式来调用,但是如果类中只有一个方法或者一个方法的使用频率非常高,那么就可以为这个方法命名为__call__来简化调用。 __call__ 存在__call__方法的类对象被称为可调用对象,它的作用可以总结为以下两点: 简化了对象下
阅读全文
摘要:问题引出 在Python中with的用法一文中已经写到了什么是上下文管理器,以及如何创建一个符合上下文协议的自定义类。那么如果我们需要将一个非自定义的类改成一个上下文管理器又该怎样实现? 我们可以为需要改写的普通类创建一个子类,在其中添加上__enter__和__exit__方法通过继承父类的方式实
阅读全文
摘要:问题引出 在业务处理时经常需要在数据的读取和存入前对数据进行预处理,通过@property和@*.setter两个装饰器就可以方便的实现。 @property python中的@property装饰器可以总结为两个作用: 让函数可以像普通变量一样使用 对要读取的数据进行预处理 示例1 我们先编写一个
阅读全文
摘要:问题引出 当需要将一个数据字典中的数据保存到类对象中时,用动态赋值的方式会比单独属性赋值更方便。 动态赋值的基础 hasattr(a,b):判断对象a中是否有属性b getattr(a,b,c):从对象a中取属性b的值,如果b不存在则返回c(参数c可以不写) setattr(a,b,c):为对象a添
阅读全文
摘要:map 功能:对序列中的每一项进行处理后返回一个相同长度的结果序列(迭代器,需要List转换) 具体过程:一个序列对应一个参数,依次对序列中的每一项进行处理,处理函数结果需要为表达式 arr = [1,2,3] m = map(lambda x:x+1, arr) print(list(m)) #
阅读全文
摘要:上下文管理器 上下文管理器是指符合上下文协议的一个类(类中实现了__enter__方法和__exit__方法)。即可以在一段代码执行前,先执行__enter__中的代码用于预处理,执行完这段代码之后再执行__exit__中的代码进行清理工作。比如入栈、出栈,打开数据库、关闭数据库,打开文件、关闭文件
阅读全文
摘要:问题引出 编写业务代码时经常会出现几个模块间相互调用的情况,本文对具体情形的出现和错误解决做相关分析。 Python模块调用的原则 在一次调用过程中,如果一个Python文件被当作模块调用,则最多只能被调用一次,再次运行到调用语句时会直接跳过。 案例 Student作为测试类 预期过程是模块1作为入
阅读全文
摘要:Pipenv的作用 可以利用pipenv来实现同时管理项目中的python虚拟环境和相关包依赖。 使用步骤 cmd中输入命令 pip install pipenv 安装pipenv cmd切换路径到需要建立虚拟环境的项目目录下 输入命令 pipenv install 开始安装虚拟环境 安装完毕后输入
阅读全文

浙公网安备 33010602011771号