让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett   译文出处:linux中国-Hank Chow    检查你的代码的质量,通过这些外部库使其更易维护.   可读性很重要.— Python 之禅The Zen of Python,Tim Peters 随着软件项目进入“维护模式”,对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准).然而,在代码库中保持一致的代码风格和测试标准能够显著减轻维护的压力…
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Python, Java, 经验] category: Python --- 我曾经是一个对Java非常反感的人,因为Java的语法非常啰嗦.而用惯了动态类型的Python再使用静态类型的Java就会觉得多出了很多的工作量. 因为工作的关系,我开始使用Java来做项目.在这个过程中,我发现Java在某些方面…
检查你的代码风格 PEP 8 是 Python 代码风格规范,它规定了类似行长度.缩进.多行表达式.变量命名约定等内容.尽管你的团队自身可能也会有稍微不同于 PEP 8 的代码风格规范,但任何代码风格规范的目标都是在代码库中强制实施一致的标准,使代码的可读性更强.更易于维护.下面三个库就可以用来帮助你美化代码. 1. Pylint Pylint 是一个检查违反 PEP 8 规范和常见错误的库.它在一些流行的编辑器和 IDE 中都有集成,也可以单独从命令行运行. 执行 pip install py…
                                                           ansible七种武器和json • 第一种武器 – ansible 命令,用于执行临时性的工作,也是我们之前主要学习的功能,必须掌握 • 第二种武器 – ansible-doc 是 Ansible模块文档说明,针对每个模块都有详细的用法说明及应用案例介绍,功能和Linux系统man命令类似,必须掌握ansible七种武器 • 第三种武器 – ansible-console 是…
vue3.0和2.0的区别Vue-cli3.0于 8月11日正式发布,看了下评论,兼容性不是很好,命令有不少变化,不是特别的乐观vue3.0 的发布与 vue2.0 相比,优势主要体现在:更快.更小.更易维护.更易于原生.让开发者更轻松:更快 1.virtual DOM 完全重写,mounting & patching 提速 100%: 2.更多编译时 (compile-time)提醒以减少 runtime 开销: 3.基于 Proxy 观察者机制以满足全语言覆盖以及更好的性能: 4.放弃 Ob…
如果说去年百度世界的关键词是“百度新首页”的话,那么今年在研发者人群中,对百度世界最深的印象就是“七种武器”,即在云的世界里,百度为开发者所提供的包括个人云存储.LBS.移动云测试中心等在内的七种工具和服务.按照百度CEO李彦宏的说法,“七种武器”只是百度帮助开发者开发出优质.多样.易用.跨平台应用这一远大图景的开端,未来还有更多. 虽然在各种微博和新闻稿中,3B大战如火如荼,各有各的说法,也各有各的证据.但周一在中国大饭店召开的百度世界2012(又 名“百度技术创新大会”,Baidu Tech…
Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cutler  Linux读写内存数据的三种方式 台湾作家林清玄在接受记者采访的时候,如此评价自己30多年写作生涯:“第一个十年我才华横溢,‘贼光闪现’,令周边黯然失色:第二个十年,我终于‘宝光现形’,不再去抢风头,反而与身边的美丽相得益彰:进入第三个十年,繁华落尽见真醇,我进入了‘醇光初现’的阶段,真正…
起源 自己经历过的面试也不少了,互联网的.外企的,都有.总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的.细细想来,面试官拥有以下七种武器.恰似古龙先生笔下的武侠世界中的七种武器.下面我为各位一一道来. (欢迎转载.转载请注明出处:http://www.cnblogs.com/hzg1981/) 长生剑=语言基础 长生剑是七种武器之首,同理,编程语言的考察也是技术面试中最基本的.这条不满足的就直接Pass了.以Java为例,语言的考察大致可以分为三个层次: 初级…
我是一名普通的软件工程师,不是什么技术大牛.这篇文章所提到的"七种武器"只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正. (一)C语言 作为一名C程序员,熟练掌握C语言是最基本的一项技能.关于如何学好C语言,以及C语言话题的讨论,网上有很多经典的文章,我就不一一列举了.在这里,我只想谈一点我个人的体会:刚毕业时,我来到一家比较大的软件公司工作,而公司的工作模式是每个人只负责一个小模块.这样工作两年后,我自认为我的C语言水平已经很高了.后来,我来到现在这家公司.由于…
传统的快速开发平台强调的是组件重用.构件重用,主要解决功能重用层面,一般提供了软件开发最常用的功能:表单设计.BPM(业务流程管理).报表.组织机构及权限等功能.但只有功能重用,没有过程重用,要么只能做特定功能开发,扩展困难,要么仍然需要手写大量代码. 有没有既能解决功能重用,又能解决过程重用的开发平台? UCML,在传统框架重用.组件重用基础之上,加强了程序员使用这些组件.构件的编程过程重用,创造性的完成了业务逻辑重用和程序员编程动作重用,把独立的个体编程思想进一步上升为团队的业务逻辑重用.…
不论什么语言,我们都需要注意性能优化问题,提高执行效率.选择了脚本语言就要忍受其速度,这句话在某种程度上说明了Python作为脚本语言的不足之处,那就是执行效率和性能不够亮.尽管Python从未如C和Java一般快速,但是不少Python项目都处于开发语言领先位置. Python很简单易用,但大多数人使用Python都知道在处理密集型cpu工作时,它的数量级依然低于C.Java和JavaScript.但不少第三方不愿赘述Python的优点,而是决定自内而外提高其性能.如果你想让Python在同一…
介绍: 树是数据结构中很重要的一种,基本的用途是用来提高查找效率,对于要反复查找的情况效果更佳,如二叉排序树.FP-树. 另外能够用来提高编码效率,如哈弗曼树. 代码: 用python实现树的构造和几种遍历算法,尽管不难.只是还是把代码作了一下整理总结. 实现功能: 树的构造 递归实现先序遍历.中序遍历.后序遍历 堆栈实现先序遍历.中序遍历.后序遍历 队列实现层次遍历 #coding=utf-8 class Node(object): """节点类""&q…
面以三个页面分别命名为framedemo.html,top.html,button.html为例来具体说明如何做.其中framedemo.html由上下两个页面组成,代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> frameDemo </TITLE> </HEAD> <fram…
作为一个程序猿(又或者是程序媛),出来闯荡江湖,没有几种必杀技在手,那是肯定无法赢得江湖名声的,除了必杀技之外,武器也是很重要的,但是一把青钢剑,肯定是无法赢得万千少男少女的欢心的.就连小李飞刀,人家也没记住他的帅,只是记得了他的飞刀.难道不是吗? 本文着重介绍对于程序猿来说,居家旅行编程泡妞的七种必备武器,以及若干实(zhuang)用(bi)必选. 1.开发环境 最隆重推荐:XAMPP 有win版本.mac版本.linux版本等等,全部都齐备了.标准的英语定义是:XAMPP is an eas…
我们在进行DNN模块开发时经常需要调用Dotnetnuke.dll中的方法函数,模块开发用到DNN的方法函数会让你的开发更加得心应手,下面我们就来介绍一下.   1) PortalModuleBase 所属命名空间:DotNetNuke.Entities.Modules 这是一个开发DNN模块所必须继承的基类,标志性的基类,在此基类中,你可以得到DNN所为你封装的一些模块基本信息,毋需你多费周折,其中包括当前用户UseID,UserInfo,TabID,ModulePath,ModuleConf…
转自:http://www.jianshu.com/p/ff7798aa4548 Brackets是Adobe开发的web编辑器,是一款免费开源.多平台支持的软件,并在于GitHub上维护.Brackets支持增加插件以提供额外的功能扩展,下面的文章将介绍一些我常用的插件以及我使用期间的心路历程. Brackets网站的介绍图片 这就是Brackets的介绍图片,可以看出,他们对“快速编辑”这一功能是非常推荐的.快速编辑就是当你的鼠标点到某元素的ID或者Class时,Ctrl+E 迅速为您查找该…
常用的提取网页数据的工具有三种xpath.css选择器.正则表达式 1.xpath 1.1在python中使用xpath必须要下载lxml模块: lxml官方文档 :https://lxml.de/index.html pip install lxml 然后导入: from lxml import etree 使用: selector = etree.HTML(html_str) selector.xpath("xpath语法") 1.2xpath语法 w3c xpath语法:http…
JavaScript(或ECMA Script) 是一门不断发展的语言,有许多关于如何前进的建议和想法.TC39(技术委员会39)是负责定义JS标准和特性的委员会,今年他们非常活跃.以下是目前处于"Stage 3阶段"的一些提案摘要,这是"完成"之前的最后一个阶段.这意味着这些特性将很快在浏览器和其他引擎中实现.事实上,其中一些现在就有了. 1. 私有字段# Chrome 和 NodeJS 12 已支持 是的,你没看错.JS终于在类中支持私有字段了.不再有 this…
7.条件执行 Bash 也可以连续执行两条命令。 第二条命令仅在第一条命令成功执行后才会开始执行。如要如此,你可以通过键入“&&”,也就是两个“&”字符进行分隔,在同一行输入两条命令。下面给出的命令会在等待 5 秒后运行 gnome-screenshot 工具: sleep 5 && gnome-screenshot via: http://www.efytimes.com/e1/fullnews.asp?edid=123564 译者:SteveArcher 校对:…
先定义一个实体类 @Data @AllArgsConstructor @NoArgsConstructor public class Human { private String name; private int age; } 下面的操作都基于这个类来进行操作.这里面使用了Lombok类库,它用注解的方式实现了基本的get和set等方法,让代码看起来更加的优雅. JAVA8之前的List排序操作 在Java8之前,对集合排序只能创建一个匿名内部类 new Comparator<Human>(…
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序的不同部分上工作时.由于他们正在处理不同的任务,他们可能不知道他们的同事已经写了类似的代码. 还有一种更隐晦的重复,特定部分的代码看上去不同但实际在做同一件事.这种重复代码往往难以找到和消除. 有时重复是有目的性的.当急于满足deadline,并且现有代码对于要交付的任务是"几乎正确的"时…
友情链接 让Python更优雅更易读(第一集) 1.装饰器 1.1装饰器特别适合用来实现以下功能 运行时校验:在执行阶段进行特定校验,当校验通不过时终止执行. 适合原因:装饰器可以方便地在函数执行前介入,并且可以读取所有参数辅助校验. 注入额外参数:在函数被调用时自动注入额外的调用参数.适合原因:装饰器的位置在函数头部,非常靠近参数被定义的位置,关联性强. 缓存执行结果:通过调用参数等输入信息,直接缓存函数执行结果. 注册函数:将被装饰函数注册为某个外部流程的一部分.适合原因:在定义函数时可以直…
变量和注释 1.变量 在编写变量尽量要让其清晰只给,让人清除搞清楚代码的意图 下方两段代码作用完全一样,但第二段代码是不是更容易让人理解 value = s.strip() username = input_string.strip() 1.1变量的基础知识 1.1.1变量的交换 作为一门动态语言,我们不仅可以无需预先声明变量类型直接赋值 同时还可以在一行内操作多个变量,比如交换 parent, child = "father", "son" parent, chi…
#猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号 #!usr/bin/env python #-*-coding:utf-8-*- #QQ124111294 import random number = random.randint(1,99)#设定答案(可…
.NET框架为程序员提供了“序列化和反序列化”这一有力的工具,使用它,我们能很容易的将内存中的对象图转化为字节流,并在需要的时候再将其恢复.这一技术的典型应用场景包括[1] : 应用程序运行状态的持久化: 在应用程序之间通过剪切板传送对象: 创建对象复本,以隔离用户操作造成的影响: 在网络间传送对象. 然而,.NET框架提供的默认序列化行为也存在着有诸多限制,尤其是在版本控制方面——比如一个使用SerializableAttribute标记,而未实现ISerializable的类型,在通过重构修…
参考书目:<大话数据结构> 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定的. 内排序和外排序 内排序:排序过程中,待排序的所有记录全部放在内存中 外排序:排序过程中,使用到了外部存储. 通常讨论的都是内排序. 影响内排序算法性能的三个因素:…
前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm--一个专门为python而生的IDE 按照惯例,第一个python代码打印一个所有开发语言里入门必学"hello,world"?no,你错了,我偏不 第一行是编码,utf-8这是国际使用标准,如果我不加的话,很容易出错 第二行print(打印的意思)语句,是python的关键词语句,可以打印一个字符,可以打印一个数字,可以打印任何你想打印的东西,只要你想让它…
<利用Python进行数据分析>第七章的代码. # -*- coding:utf-8 -*-# <python for data analysis>第七章, 数据规整化 import pandas as pdimport numpy as npimport time start = time.time()# 1.合并数据集,有merge.join.concat三种方式# 1.1.数据库风格的dataframe合并(merge & join)# merge函数将两个dataf…
一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性:经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定的. 内排序和外排序内排序:排序过程中,待排序的所有记录全部放在内存中外排序:排序过程中,使用到了外部存储.通常讨论的都是内排序. 影响内排序算法性能的三个因素: 时间复杂度:即时间性能,高效率的排序…
出于好奇:js中使用json存数据查找速度快,还是使用数组存数据查找快? 探究V8中对象的实现原理,熟悉数组索引属性.命名属性.对象内属性.隐藏类.描述符数组.快慢属性等等. D8调试工具使用请来这里 对象属性 我们先来看一个例子.假设我们有这样的代码: function testV8() { this[100] = 'test-100' this[1] = 'test-1' this["D"] = 'foo-D' // 字符串key this["B"] = 'fo…