python 实用技巧
声明: 此博文转载自 http://www.cnblogs.com/analyzer/articles/2042827.html
1 在作比较时你可以这样写: 3.14<pi<3.15,它得到的结果和(pi>3.14 and pi<3.15)是一样的,在大多数其他语言里,你都不能用这么自然的语法了。
2 Int类型不会在超过31bit或32bit后溢出,它们会变成long型。在
python里,long并非就是64位,他就是"长"类型,(python的长类型可以容纳数万位大的整数),效率会降低一点。在python 3000中,甚至连int与long的区别都没有了。
3默认值只会在编译时被赋值一次,而非运行时。试试这个: def func
(a[]): a.append(42); 返回值a会随调用不断加入42
4 连接多个字符串时,"".join(list)会比 for x in list: s+=x快得多。
5 语法 print >>file里,仅数值被写入文件中,而print的格式化功能不起作用。
6 你可以通过(x,)来创建只有一个元素的tuple,通常你只能建立如
(x,y,z)那样的tuple,如果你想通过(x)来建立一个tuple,得到的只是x
7如果你想看看整数类的帮助文档,你可以写(5).__str__; 你不能简化成5.__str__,因为解释器会把5.认作是浮点数,然后出错了。
8你可以使用属性而不是getter或setter函数。例如serial. baudrate=192000 可以设置serial._baud,跟你调用其它调用的效果一样。
9 一个紧跟在for循环后的else语句只有在循环不通过break退出时才会被调用。这对查找循环很有用处,通常这样的循环都会需要在退出后作额外的检查判断。
2 Int类型不会在超过31bit或32bit后溢出,它们会变成long型。在
python里,long并非就是64位,他就是"长"类型,(python的长类型可以容纳数万位大的整数),效率会降低一点。在python 3000中,甚至连int与long的区别都没有了。
3默认值只会在编译时被赋值一次,而非运行时。试试这个: def func
(a[]): a.append(42); 返回值a会随调用不断加入42
4 连接多个字符串时,"".join(list)会比 for x in list: s+=x快得多。
5 语法 print >>file里,仅数值被写入文件中,而print的格式化功能不起作用。
6 你可以通过(x,)来创建只有一个元素的tuple,通常你只能建立如
(x,y,z)那样的tuple,如果你想通过(x)来建立一个tuple,得到的只是x
7如果你想看看整数类的帮助文档,你可以写(5).__str__; 你不能简化成5.__str__,因为解释器会把5.认作是浮点数,然后出错了。
8你可以使用属性而不是getter或setter函数。例如serial. baudrate=192000 可以设置serial._baud,跟你调用其它调用的效果一样。
9 一个紧跟在for循环后的else语句只有在循环不通过break退出时才会被调用。这对查找循环很有用处,通常这样的循环都会需要在退出后作额外的检查判断。
10 判断字典存不存在key 用
if key in _dict:
...cost time : 0.000270260584074
比
if key in _dict.keys():
...cost time : 0.05606396371
效率高...
上面是1000000数据测试
11 、 如何交接两个变量的值:
a =1
b=2
a,b = b,a
12、去除重复元素
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
print l2
l3 = [('a','b','dddd'), ('a','b','dddd'),('a','b','dddd1')]
print {}.fromkeys(l3).keys()