![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
guofei_fly
这个作者很懒,什么都没留下…
展开
-
【python基础】python中下划线的应用场景
python中普遍在变量或方法命名时使用单下划线_或双下划线__的定义方式,本文介绍五种下划线模式。1. 前单下划线_var这是PEP8的一种规定:即用来表示内部变量或方法。仅用作提醒,并不影响其调用。但注意作为外部模块被导入时,若采用通配符(即from xxx import *),前单下划线的变量或方法无法被导入,除非该外部模块中定义了包含该变量或方法的__all__列表。2. 后单下划线var_用来定义变量名或函数名时,防止与内置关键字冲突,如定义变量class_。3. 前双下划线__var原创 2020-08-20 21:36:48 · 207 阅读 · 0 评论 -
【python进阶】模仿scikit-learn打造fit和transform流水线
scikit-learn中为各preprocessor、classsifier和estimatior涉及了统一的fit、transform和fit_transform接口,方便了用户的理解和调用。本文模拟其设计理念,设计了一套fit和transform流水线。import typingimport abcimport functoolsimport numpy as npdef transform_validate(func: typing.Callable): @functools.原创 2020-08-12 11:51:03 · 369 阅读 · 0 评论 -
【python基础】h5py库的基本使用
一个HDF5文件是一种存放两类对象的容器:dataset和group. Dataset是类似于数组的数据集,而group是类似文件夹一样的容器,存放dataset和其他group。在使用h5py的时候需要牢记一句话:groups类比词典,dataset类比Numpy中的数组。...原创 2020-08-08 17:21:20 · 4313 阅读 · 0 评论 -
【python基础】装饰器@property
在装饰器详解中介绍了装饰器的基本用法,而python语言中内置了一些装饰器,本文介绍在类的方法定义中常用的装饰器: @property原创 2020-08-06 19:58:01 · 298 阅读 · 0 评论 -
【python基础】对于函数闭包的理解
在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。...原创 2020-08-05 22:46:37 · 275 阅读 · 0 评论 -
【python基础】装饰器详解
装饰器(decorator)是一种常用的设计模式/思想,主要用于在不修改原函数功能的基础上添加额外的功能,从而实现非业务公共逻辑代码的剥离,达到解耦的目的。从具体实现上来说,装饰器可简单理解为函数的函数的嵌套式结构,外层函数返回内层函数对象,而内层函数本身涵盖被装饰函数以及额外功能逻辑的组合。1. 装饰器的基本用法首先以一个简单而经典的例子引出装饰器的基本写法:要求提供一个函数,能够统计任意一个函数运行的时间。非装饰器版本:将函数对象作为参数传入时间统计函数中import timedef原创 2020-08-05 20:12:52 · 376 阅读 · 0 评论 -
【Python进阶】抽象类的使用
抽象类是不能实例化的类,其职责是定义子类应实 现的一组抽象方法。优点:规定继承它的子类去实现它所要求的方法。相似功能的归一化,规范代码。处理继承问题方面更加规范、系统,明确调用之间的相互关系,使得继承层次更加清晰。从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽象而来的。从实现角度来看,抽象类与普通类的不同之处在于:抽象类中有抽象方法,该类不能被实例化,只能被继承,且子类必须实现抽象方法。collections.abc — Abstract Base Classes for C原创 2020-08-03 17:39:46 · 1114 阅读 · 0 评论 -
【python基础】基于sorted的排序函数
sorted是Python的内置排序函数,其基本用法为:sorted(objs, key:key-func, reverse: bool)->List:其中排序对象objs是一个可迭代对象,参数key是一个key function,表示排序所参考的值,参数reverse表示排序逻辑,默认为False,即升序排列,可设置为True实现自动降序。1. 常用用法:字典排序字典排序是sorted函数最常用的地方,即根据字典内的某个key值的大小进行排序。我们以一个学生考试成绩的例子进行介绍:# 学原创 2020-08-02 16:20:32 · 1885 阅读 · 0 评论 -
【python进阶】类的__slots__属性
python作为一门动态语言,可以在对象创建后动态的添加属性和方法。示例1:动态添加属性class Dog(object): def __init__(self, name, age): self.name = name self.age = agedog = Dog('ahuang', 10)dog.home = 'China' # 直接外部定义print(dog.home) 示例2:动态添加属性class Dog(object原创 2020-07-29 23:21:01 · 452 阅读 · 0 评论 -
对python中变量作用域、命名空间、引用和赋值的理解
在Python中并不是所有的语句块中都会产生作用域。只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。第一,两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。第二,两者使用的范围不同。global关键字可以用在任何地方原创 2020-07-28 23:36:47 · 877 阅读 · 0 评论 -
typing模块: 类型标注的有效工具
能够帮助IDE进行类型检测和自动补全提示原创 2020-07-27 23:36:25 · 630 阅读 · 0 评论 -
python中不常见流程控制集锦
本文记录了博主在使用python中发现的一些不常见流程控制,将不定期更新。1. 循环中break和外部else的连用该用法常用于在循环中break未触发时,进行一个额外的操作"""else与循环标记(for,while)平级,与循环内部的break联动,表示若未触发break,则执行else中的函数"""# 实例1:判断某array长度与指定index的大小def guess_length(array, index): for i, v in enumerate(array):原创 2020-05-16 00:16:52 · 156 阅读 · 1 评论 -
Flask中返回Excel的若干种方案
本文记录了Flask中返回Excel的常见方案。from flask import Flask, send_from_directory, Response, make_responseimport pandas as pdimport osapp = Flask(__name__)# 1. 方案一:以静态文件的形式返回@app.route('/download_file/<path:filepath>/', methods=["GET"])def download_file(原创 2020-05-09 10:13:33 · 5281 阅读 · 1 评论 -
自定义数据迭代器
自定义数据迭代器类,主要需要定义如下方法:(1)__init__:初始化方法,可用于传入数据路径或导入数据;(2)__iter__:定义返回的可迭代对象,在自定义数据迭代器类时,直接返回本对象self即可;(3)__next__:定义迭代器对象,用于next()方法或for方法,逐个读出数据;(4)__len__:定义可迭代器长度下面是一个简单示例:class DataLoader(o...原创 2020-04-09 22:17:14 · 306 阅读 · 0 评论 -
运行Python脚本时在命令行中传入参数
当在命令行中,运行python脚本时,通常有两种方式传入参数方法1: 基于位置的参数传入即根据输入参数的的位置,分配给对应的脚本文件。此时,要特别注意参数顺序的一一对应。python脚本文件script.pyimport sysdef add(a, b): print(float(a)+float(b))if __name__ == '__main__': arg1,...原创 2020-03-05 20:10:01 · 3479 阅读 · 1 评论 -
进度条Tqdm库的常用方法
Tqdm 是Python中一个快速、可扩展的进度条工具,可用于封装任意的迭代器对象,输出迭代器迭代进度信息。其常见的使用方法有如下三种:方法一、在for循环中用tdqm封装迭代器from tqdm import tqdmfor i in tqdm(range(10)): print(i)其输出效果如下:100%|██████████| 10/10 [00:00<0...原创 2020-02-03 14:55:29 · 954 阅读 · 0 评论 -
将Unicode编码为plain ASCII
def unicodeToAscii(s): return ''.join( c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn' and c in all_letters )原创 2020-02-01 16:36:34 · 400 阅读 · 0 评论 -
python中的日志管理模块logging
logging模块是python中自带的日志处理模块,可用于记录程序异常的位置、时间和具体错误信息等,从而方便开发人员检测程序运行过程和捕获、分析程序异常。按照输出类型来分,logging可选择控制台直接输出日志信息,也可选择将日志信息写入日志文件。按照日志级别来分,logging中的日志等级从低到高依次为:(1)NOTSET ,对应数字值为0。使用场景:不做设置,自动集成父级Logger的...原创 2020-01-08 09:58:01 · 1632 阅读 · 0 评论 -
利用configparser写配置文件
configparser是python推荐使用的配置文件管理模块,特别适用于简单字符串构成的key-value对配置信息。其配置信息一般保存于config.ini文件,文件内容示例如下:[DEFAULT]author = guofeiproject = DMdate = 2019-12-19[MySQL]hostname = 192.168.0.202port = 3306da...原创 2019-12-20 18:02:35 · 674 阅读 · 0 评论 -
python中基于mapping数据的字典dict生成
在python中,字典的生成一般有三种方式:方式一:空字典+添加操作# 方法1:a = {}# 方法二a = dict()# 接着通过update等操作a.update()方式二:dict(**kwargs)方式# 方法1a = {"a":1, "b":2, "c":3}# 方法2a = dict(a=1, b=2, c=3)方式三:dict(mapping)方...原创 2019-12-20 16:13:59 · 3117 阅读 · 0 评论 -
Celery实现异步任务和定时任务的简单示例
Celery是python开发中广为使用的分布式任务队列框架,其整体框架如下图,包括消息中间件(Broker)、任务执行单元Worker、结果存储(Backend)三大部分。本文仅举Celery在异步任务和定时任务的两个小示例。Backend采用redis-4.0.11, Celery版本为4.1.1。读者请注意不同版本redis和Celery的兼容性,同时注意不同版本Celery的API间的...原创 2019-11-29 17:30:58 · 637 阅读 · 1 评论 -
python中的时间数据处理模块
python中的time、datetime、calendar、pandas中均可以处理时间数据。具体代码见:https://github.com/guofei1989/python_func_cases/blob/master/package_demos/time_handler.ipynb一、Times模块内置时间戳、结构化时间和格式化的时间字符串三种数据类型,之间可以相互转化。二、Da...原创 2018-12-22 15:49:11 · 375 阅读 · 1 评论 -
python中的集合set操作
集合是无序、不重复的数据组合。python中用set数据类型表示可变集合,常用于去除序列元素中重复单元,以及进行响应的集合操作。&gt;&gt;&gt; A = {1, 2, 3}&gt;&gt;&gt; A.add(4) # 集合添加元素, 必须为可hash对象&gt;&gt;&gt; A{1, 2, 3, 4}&gt;&原创 2018-12-14 21:49:43 · 279 阅读 · 0 评论