pythonic之路(一)

pythonic之路(一)

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

python中隐含为 的对象:

数值 (不是字符 )

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

其余的则隐含为 。

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

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

假如写为

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

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

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

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

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

问题代码:

改进代码:

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

三、用 表示list的剩余元素

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

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

一个原理验证例子。

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

用 改进版。

五、用 函数格式化字符串

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

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

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

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

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

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

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

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

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

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

九、用 消除重复元素

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

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

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

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

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

啰嗦写法:

简洁写法:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171221G00WKA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券