微信号:grzlwx

介绍:光荣之路官方资讯

编写高质量代码–改善python程序的建议(五)续

2016-01-17 22:47 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

建议二十五:深入理解None,正确判断对象是否为空
python中以下数据会被当作空来处理:

  • 常量None

  • 常量False

  • 任何形式的数值类型零,如0,0L, 0.0, 0j

  • 空的序列,如‘’、()、[]

  • 空的字典:如{}

  • 当用户定义的类中定义了nonzero()方法和len()方法,并且该方法返回整数0或者布尔值False的时候。

其中常量None的特殊性体现在它既不是0、False,也不是空字符串,它就是一个空值对象。其数据类型为NoneType,遵循单例模式,是唯一的,因为不能创建None对象,所有赋值为None的变量都相等,并且None与任何其他非None的对象比较结果都为False。
判断列表是否为空的方式:

if list:
statements
else:
statements

上面代码执行过程会调用内部方法__nonzero__()来判断变量是否为空并返回结果。
nonzero():用于对自身对象进行控制测试,返回0/1或True/False。如果一个对象没有定义该方法,python将获取__len__()方法调用的结果来进行判断,如果一个类中既没有定义__len__()方法也没有定义__nonzero__()方法,该类的实例用if判断的结果都为True。


建议二十六:连接字符串应优先使用join而不是+
经过实验,join()方法的效率要高于+操作符,特别是字符串规模交大的时候。简述原理:
当用+连接字符串的时候,由于字符串是不可变对象,如果要连接字符串,执行一次+操作便会在内存中申请一块新的内存空间,并将上一次操作的结果和本次操作的右操作数复制到新申请的内存空间。
而join()方法会首先计算需要申请的总的内存空间,然后一次性申请所需内存并将字符串序列中的每一个元素复制到内存中去。


建议二十七:格式化字符串时尽量使用.format方式而不是%
先对两种格式化字符串方式做一个简单介绍:
%操作符根据转换说明符所规定的格式返回一串格式化后的字符串,转换说明符的基本形式为:

%[转换标记][宽度[.精确度]]

.format方法格式字符串的基本语法为:

[[填充符]对齐方式][符号][#][0][宽度][,][.精确度][转换类型]
#填充符是除了"{"和"}"符号以外的任意符号。

常用用法如下:

# 1.使用符号位置
"The number {0:,} in hex is: {0:#x}, the number {1} in oct is {1:#o}".format(4746, 45)
# 'The number 4,746 in hex is: 0x128a, the number 45 in oct is 0o55'
# 2.使用名称
print 'the max number is {max}, the min number is {min}, the average number is {average:0.3f}'.format(max=189,min=12.6,average=23.5)
# 'the max number is 189, the min number is 12.6, the average number is 23.500'
# 3.通过类的属性
# 4.格式化元组的具体项

尽量使用foramt的原因:

  • format方式比较灵活,参数的顺序与格式化的顺序不必完全相同

  • format方式可以方便地作为参数传递。即依靠python的灵活性,可以给format()传入参数进行处理

  • %最终会被.format方式取代

  • %方法在某些特殊情况下使用时需要特别小心,比如可以尝试下如下代码:

    item = ('hh','xx')
    print "item are %s" %(item)

    参考:编写高质量代码--改善python程序的91个建议

不向静中参妙理,纵然颖悟也虚浮 立乎其大 和而不同 古之成大事者,不惟有超世之才,亦必有坚韧不拔之志

<完>

相关阅读:

编写高质量代码–改善python程序的建议(一)

编写高质量代码–改善python程序的建议(二)

编写高质量代码–改善python程序的建议(三)

编写高质量代码-改善python程序的建议(四)

编写高质量代码–改善python程序的建议(五)

(作者:cotyb 来源:http://www.cnblogs.com/cotyb/p/5104991.html)

公益传播测试知识、技能与正能量!感谢作者!
分享测试生活,思考测试人生!欢迎投稿!
文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。
735821166@qq.com

光荣之路
软件测试培训


官网:www.gloryroad.cn

微信公众号:gloryroadtrain

性能测试QQ群:415987441
测试招聘QQ群: 203715128
自动化3群QQ: 371211499

Python群:457561756

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 android 三种实现水平滑动(ViewPager、ViewFilpper、ViewFlow)的比较 这才是互联网与安全团队需要的几种人才! .NET跨平台实战:博客园的.NET跨平台实践 - 升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库 入职阿里巴巴数据分析师,我用了1年时间 测试框架之我见