京公网安备 11010802034615号
经营许可证编号:京B2-20210330
16个你绝不知道的Python神奇技能
文 | Andrew Liu
显示有限的接口到外部
当发布python第三方package时, 并不希望代码中所有的函数或者class可以被外部import, 在__init__.py中添加__all__属性,
该list中填写可以import的类或者函数名, 可以起到限制的import的作用, 防止外部import其他函数或者类
with的魔力
with语句需要支持上下文管理协议的对象, 上下文管理协议包含__enter__和__exit__两个方法. with语句建立运行时上下文需要通过这两个方法执行进入和退出操作.
其中上下文表达式是跟在with之后的表达式, 该表示大返回一个上下文管理对象
详细原理可以查看这篇文章, 浅谈 Python 的 with 语句
知道具体原理, 我们可以自定义支持上下文管理协议的类, 类中实现__enter__和__exit__方法
执行结果如下:
证明了会先执行__enter__方法, 然后调用with内的逻辑, 最后执行__exit__做退出处理, 并且, 即使出现异常也能正常退出
filter的用法
相对filter而言, map和reduce使用的会更频繁一些, filter正如其名字, 按照某种规则过滤掉一些元素
一行作判断
当条件满足时, 返回的为等号后面的变量, 否则返回else后语句
装饰器之单例
使用装饰器实现简单的单例模式
staticmethod装饰器
·
类中两种常用的装饰, 首先区分一下他们
·
·
普通成员函数, 其中第一个隐式参数为对象
·
·
classmethod装饰器, 类方法(给人感觉非常类似于OC中的类方法), 其中第一个隐式参数为类
·
·
staticmethod装饰器, 没有任何隐式参数. python中的静态方法类似与C++中的静态方法
·
property装饰器
定义私有类属性
将property与装饰器结合实现属性私有化(更简单安全的实现get和set方法)
fget是获取属性的值的函数,fset是设置属性值的函数,fdel是删除属性的函数,doc是一个字符串(like a comment).从实现来看,这些参数都是可选的
property有三个方法getter(), setter()和delete() 来指定fget, fset和fdel。 这表示以下这行
iter魔法
通过yield和__iter__的结合, 我们可以把一个对象变成可迭代的
通过__str__的重写, 可以直接通过想要的形式打印对象
神奇partial
partial使用上很像C++中仿函数(函数对象).
在stackoverflow给出了类似与partial的运行方式
利用用闭包的特性绑定预先绑定一些函数参数, 返回一个可调用的变量, 直到真正的调用执行
神秘eval
eval我理解为一种内嵌的python解释器(这种解释可能会有偏差), 会解释字符串为对应的代码并执行, 并且将执行结果返回
看一下下面这个例子
exec
·
exec在Python中会忽略返回值, 总是返回None, eval会返回执行代码或语句的返回值
·
·
exec和eval在执行代码时, 除了返回值其他行为都相同
·
·
在传入字符串时, 会使用compile(source, '<string>', mode)编译字节码. mode的取值为exec和eval
·
getattr
getattr(object, name[, default])Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, ‘foobar’) is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.
通过string类型的name, 返回对象的name属性(方法)对应的值, 如果属性不存在, 则返回默认值, 相当于object.name
命令行处理
读写csv文件
各种时间形式转换
只发一张网上的图, 然后差文档就好了, 这个是记不住的
字符串格式化
一个非常好用, 很多人又不知道的功能
来自:http://andrewliu.in/2015/11/14/Python%E5%A5%87%E6%8A%80%E6%B7%AB%E5%B7%A7/
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在日常办公中,数据透视表是Excel、WPS等表格工具中最常用的数据分析利器——它能快速汇总繁杂数据、挖掘数据关联、生成直观报表 ...
2026-02-28有限元法(Finite Element Method, FEM)作为工程数值模拟的核心工具,已广泛应用于机械制造、航空航天、土木工程、生物医学等多 ...
2026-02-28在数字化时代,“以用户为中心”已成为企业运营的核心逻辑,而用户画像则是企业读懂用户、精准服务用户的关键载体。CDA(Certifi ...
2026-02-28在Python面向对象编程(OOP)中,类方法是构建模块化、可复用代码的核心载体,也是实现封装、继承、多态特性的关键工具。无论是 ...
2026-02-27在MySQL数据库优化中,索引是提升查询效率的核心手段—— 面对千万级、亿级数据量,合理创建索引能将查询时间从秒级压缩到毫秒级 ...
2026-02-27在数字化时代,企业积累的海量数据如同散落的珍珠,若缺乏有效的梳理与分类,终将难以发挥实际价值。CDA(Certified Data Analys ...
2026-02-27在问卷调研中,我们常遇到这样的场景:针对同一批调查对象,在不同时间点(如干预前、干预后、随访期)发放相同或相似的问卷,收 ...
2026-02-26在销售管理的实操场景中,“销售机会”是核心抓手—— 从潜在客户接触到最终成交,每一个环节都藏着业绩增长的关键,也暗藏着客 ...
2026-02-26在CDA数据分析师的日常工作中,数据提取、整理、加工是所有分析工作的起点,而“创建表”与“创建视图”,则是数据库操作中最基 ...
2026-02-26在机器学习分析、数据决策的全流程中,“数据质量决定分析价值”早已成为行业共识—— 正如我们此前在运用机器学习进行分析时强 ...
2026-02-25在数字化时代,数据已成为企业决策、行业升级的核心资产,但海量杂乱的原始数据本身不具备价值—— 只有通过科学的分析方法,挖 ...
2026-02-25在数字化时代,数据已成为企业核心资产,而“数据存储有序化、数据分析专业化、数据价值可落地”,则是企业实现数据驱动的三大核 ...
2026-02-25在数据分析、机器学习的实操场景中,聚类分析与主成分分析(PCA)是两种高频使用的统计与数据处理方法。二者常被用于数据预处理 ...
2026-02-24在聚类分析的实操场景中,K-Means算法因其简单高效、易落地的特点,成为处理无监督分类问题的首选工具——无论是用户画像分层、 ...
2026-02-24数字化浪潮下,数据已成为企业核心竞争力,“用数据说话、用数据决策”成为企业发展的核心逻辑。CDA(Certified Data Analyst) ...
2026-02-24CDA一级知识点汇总手册 第五章 业务数据的特征、处理与透视分析考点52:业务数据分析基础考点53:输入和资源需求考点54:业务数 ...
2026-02-23CDA一级知识点汇总手册 第四章 战略与业务数据分析考点43:战略数据分析基础考点44:表格结构数据的使用考点45:输入数据和资源 ...
2026-02-22CDA一级知识点汇总手册 第三章 商业数据分析框架考点27:商业数据分析体系的核心逻辑——BSC五视角框架考点28:战略视角考点29: ...
2026-02-20CDA一级知识点汇总手册 第二章 数据分析方法考点7:基础范式的核心逻辑(本体论与流程化)考点8:分类分析(本体论核心应用)考 ...
2026-02-18第一章:数据分析思维考点1:UVCA时代的特点考点2:数据分析背后的逻辑思维方法论考点3:流程化企业的数据分析需求考点4:企业数 ...
2026-02-16