pythonic之路(一)

pythonic之路(一)

一、 中不要直接将语句与 、 、 做比较

python中隐含为 的对象:

数值 (不是字符 )

空容器,比如空list 、空tuple 、空dict 、空str

其余的则隐含为 。

尽量避免用如下语法 , , ,应替换为 , , 。

但是,如果一个程序的关键字参数默认值为 ,代码需要判断输入是否为 ,则必须显式的与 比较,即

假如写为

那么 也被排除在外,如果参数 是一个序列的指标(index)则0显然是其中一个而不应该被排除。

同时,要记住,与 作比较时用 和 ,不要用 。

所以, 是个例外,对于其他的条件判断,直接用python隐含的 和 来做比较,而不是 。

二、尽量不要用可变对象(比如list、dict)作为函数的默认参数

因为可变对象会将实参累积起来,导致随后的调用出现问题。可用 作为默认值。

问题代码:

改进代码:

总的来说,要在函数里重新初始化形参,这样每次调用时都是以初始化的形参来接收实参,从而避免了累加。这对初学者来说可能是个陷阱,但老司机一般不会犯这样的错。

三、用 表示list的剩余元素

四、通过字典 给变量提供默认值

字典方法 实现了一个条件判断功能。 。

一个原理验证例子。

一个有点用处但语法啰嗦的例子。

用 改进版。

五、用 函数格式化字符串

格式化字符串一般有三种方法,用“+”、用“%”、用“format函数”。

最糟糕的莫过于用“+”,语句冗长晦涩难懂(尤其当有一串字符需要格式化时);

用“%”稍微好一些,缺点是用变量格式作为占位符,完全与格式化的内容脱节,也难懂;

直接使用命名的占位符,一看一目了然,清晰简洁。

六、如果有一个list,可用 创建一个string

七、class受保护变量和私有变量

受保护变量以单下划线开始,比如 ,受保护的意思是提示客户(client)不要直接使用它。

私有变量以双下划线开始,比如 ,私有的意思是提示子类没法直接调用该属性。

一定要记住,这只是程序员所遵循的一个传统而已,如果client真想一窥究竟,谁也没法阻止,实际上没有真正的隐私。但是要尊重开发人员的意图。

八、在class里定义一个魔法方法 ,用于友好的打印instance信息。

九、用 消除重复元素

集合的一个特性是唯一性,即没有重复的元素。相当于字典的键。

是 和 的子类。所以可用于 循环,也可当做 语句的迭代对象。

集合可以很方便的用集合表达式(类似于列表表达式)来生成。

包含了所有数学意义上集合的运算,比如并( )、交( )、差( )、对称差(并集-交集 )。

可以通过交集求出经常上线的且正在活跃的用户。

啰嗦写法:

简洁写法:

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云霄雨霁

Java--对象的克隆

16370
来自专栏阿凯的Excel

Python读书笔记(变量)

前言:本系列为小编的读书笔记,非教学课程;小编只是想用平实的语言翻译一下自己所学的东西。 首先什么是变量呢? 百度百科:变量来源于数学,是计算机语言中能储存计算...

376100
来自专栏Android开发指南

Effecvtive Java Note

31750
来自专栏陈满iOS

编程语言傻傻分不清:弱类型、强类型、动态类型、静态类型

这篇文章综合介绍了四种分类,特别地,为了方便大家快速有效的学习,笔者尝试用思维导图的办法描述编程语言的区别。一般来讲,看第一个图就够了。但如果你想更深入地了解,...

27710
来自专栏玄魂工作室

如何学python 第八课 流程控制-For,While,循环语句,函数

循环语句 也许你会问,什么是‘循环’?在脚本程序里,循环就是‘在一定情况下一次又一次的执行某些代码’。举个例子来说,假设你很饿,桌上有好多好多个馒头,当你依旧饿...

35090
来自专栏信数据得永生

JavaScript 编程精解 中文第三版 四、数据结构:对象和数组

433100
来自专栏技术小站

Python 基础 (-)

Python 单词是“大蟒蛇”的意思。但是龟叔不是喜欢蟒蛇才起这个名字,而是正在追剧:英国电视喜剧片《蒙提·派森的飞行马戏团》(Monty Python and...

1.8K30
来自专栏菜鸟计划

angularjs filter详解

过滤器(filter)正如其名,作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果。 主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的...

38280
来自专栏互联网杂技

28个JavaScript 编程黑科技:还有这种操作!

从来不需要声明一个变量的值是undefined,因为JavaScript会自动把一个未赋值的变量置为undefined。所有如果你在代码里这么写,会被鄙视的

13830
来自专栏玄魂工作室

如何学Python 第七课 列表型变量 列表方法 列表索引

在上一篇文章里,我们介绍了if语句、elif语句和else语句以及条件判断语句。我们今天来说点流程控制之外的东西:列表。列表型变量可以在变量下存储多个值,并以索...

34570

扫码关注云+社区

领取腾讯云代金券