Python踩坑指南(第三季)
在代码维护的过程中,发现需要对某个变量进行保护,不允许调用修改,之前我一直使用的是_x或者__x的形式,这样做只是避免展示,但是如果想要强行修改,还是可以变更的,为了保证高安全性,这边可以参考@property的形式:
class test(object):"""docstring for test"""def __init__(self, arg):self._arg = arg@propertydef arg(self):return self._arg@arg.setterdef set_arg(self,val):self._arg=val
当想修改arg的值的时候,必须通过set_arg去修改,虽然仍然可以通过改_arg的方式,但是相对直接暴露多了一层保护;除此之外,它还可以实现一定的逻辑转化:
In [10]: class test(object):...: """docstring for test"""...: def __init__(self, arg):...: self._arg = arg...: self._half_arg = arg/2...: ...: @property...: def arg(self):...: return self._arg...:...: @property...: def half_arg(self):...: return self._half_arg...: ...: @arg.setter...: def set_arg(self,val):...: self._arg=val...: self._half_arg = val/2...:In [11]: t=test(10)In [12]: t.arg
Out[12]: 10In [13]: t.half_arg
Out[13]: 5.0In [14]: t.set_arg=20In [15]: t.arg
Out[15]: 20In [16]: t.half_arg
Out[16]: 10.0
利用None!=None的性质可以进行快速去None,比如:
a = df[df.label_y==df.label_y]
可以快速的把label_y=None的列进行剔除,比dropna要快一些。
traceback可以很好的把错误信息进行暴露,
try:1/0
except Exception,e:print e
如果这样包起来错误的花,输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错
如果使用traceback:
try:1/0
except Exception as e:traceback.print_exc()
输出结果是:
Traceback (most recent call last): File “test_traceback.py”, line 3, in 1/0 ZeroDivisionError: integer division or modulo by zero
这个还不是精髓的,如果说在一个服务中,或者大型项目中,我们不会时时刻刻去盯着进程,还可以进行落日志,方便后续查看:
traceback.print_exc(file=open('tb.txt','w+'))
import time
try:1/0
except Exception as e:traceback.print_exc(file=open(str(time.time())+'.txt','w+'))
欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码、转行疑问都欢迎通过邮箱发消息给我。
Python踩坑指南(第三季)相关推荐
- Python踩坑指南(第一季)
最近在python开发的过程中,发现了一些比较有意思的问题,确实让自己在开发过程中被恶心了一把,所以开了这个连续的更新博文,之后会持续的按第一第二第三这种版本下去,更新一些比较有意思的python代码 ...
- Python踩坑指南(第二季)
本期围绕jieba讲一个我遇到的实际问题,在同一个服务里,存在两个不同接口A和B,都用到了jieba分词,区别在于两者需要调用不同的词库,巧合中,存在以下情况: 词库A:"干拌面" ...
- pytorch .item_从数据到模型,你可能需要1篇详实的pytorch踩坑指南
原创 · 作者 | Giant 学校 | 浙江大学 研究方向 | 对话系统.text2sql 熟悉DL的朋友应该知道Tensorflow.Pytorch.Caffe这些成熟的框架,它们让广大AI爱好者 ...
- 阿里云天池【Docker练习场】踩坑指南
阿里云天池[Docker练习场]踩坑指南 题目直达 提交环境搭建(基于macOS) Docker的安装与基本功能使用 Docker安装过程遇到的小问题 提交结果注意事项 提交时的镜像配置 项目结构规范 ...
- tabbar角标 小程序_【沃行课堂】恭喜你遇到“坑”,小程序踩坑指南
上周我们的开发小哥哥带领我们一起领略了开发中遇到的各种问题,以及基于SaaS模式的平台技术架构及实现.本周我们换个方向,由高级开发工程师秋哥带领大家共同探讨下小程序开发中踩过的坑.秋哥会从公司的几个小 ...
- Git Commit Message校验踩坑指南
背景 在团队多人开发中,规范的commit message可以快速定位代码提交历史,回溯问题根源,方便组内多人协作,提高团队效率. 本篇文章主要包含以下两方面内容: commitizen/cz-cli ...
- MacBook通过XGP玩女神异闻录5皇家版不踩坑指南
XGP是微软Xbox游戏通行证服务,全称Xbox Game Pass,俗称西瓜皮. 女神异闻录5皇家版(P5R)登录了全平台,XGP会员可以通过云游戏在MacBook中游玩,本篇为MacBook玩P5 ...
- 联调中通wincall平台-踩坑指南
开发踩坑指南 初始化阶段 new CTIPlus({token: user.token, //tokenagentPhone: user.phone, //坐席工号或者手机号agNo: user.ag ...
- Spring Cloud踩坑指南
Spring Cloud踩坑指南 1 Spring Cloud搭建 参考 Spring Cloud 微服务技术栈:搭建高可用 Eureka Server.服务注册与发现 2 常见问题 2.1 修改ho ...
最新文章
- VBscript.Encode 解码器
- 数据结构与算法笔记(十四)—— 二叉树
- 共识协议(9)NPOS波卡
- Pandas数据挖掘与分析时的常用方法
- python和lua哪个有前途_(转)LUA与python根本就不具有可比性
- 028 -bash-4.1$ 出现故障的原理及解决办法?
- 企业网站6个常见的优化漏洞
- 【网站】Bing每日壁纸API分享
- c++ 写x64汇编 5参数_第9篇-C/C++ x86_64的函数栈
- android 注册静态广播接收器VS注册动态广播接收器
- cvThreshold() 阈值化
- ogg怎么转mp3格式,ogg转mp3方法
- Windows注册表详解
- 测试专业相机快门软件,检测快门次数软件 快门数量检测
- 【Micro USB选择指南】手工焊接Micro USB接口器件型号选择
- 周末闲暇用javascript写个网页“斗兽棋”小游戏
- 4G EPS 中的 PDN Connection
- Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must hav
- 生鲜配送管理系统_升鲜宝V2.0 供应商协同系统设计思想及设计效果展现(一)...
- C-Kermit在linux 下的安装和使用
热门文章
- osg中运用Shader(osg初级篇2)
- 大连理工IIAU Lab提出SSLSOD:自监督预训练的RGB-D显著性目标检测模型(AAAI 22)
- 面向自动驾驶领域的3D点云目标检测方法汇总!(单模态+多模态/数据+代码)
- 基于PHP的图片共享网站设计,基于PHP实现的WEB图片共享系统(SQL数据库),毕业论文设计...
- 怎么两边同时取ln_脏辫发型怎么编编发教程图解简单易学!
- day9 线程与进程、队列
- ICLR2020 | CS-GNN:用平滑度刻画图信息的使用
- RDKit toolkit实战二:Generating Similarity Maps Using Fingerprints
- WIN10python3.7配置MaskRCNN环境及demo测试(tensorflow-gpu1.x)
- python while if 区别_对python中for、if、while的区别与比较方法