一门语言的编程习惯往往都是由用户来确立的,而一种好的编程习惯无疑会使编程效率大大提高
强烈推荐Effective Python 这本书
以下是自己整理的一些小心得
1、遵循PEP8风格指南
python中的空白会影响代码的含义,因此,希望:
(1)、使用空格来表示缩进,而非是占位符tab。
(2)、和语法相关的每一层缩进都用4个空格来表示。
(3)、对于占据多行的长表达式来说,除却首行之外的其余各行都应该在通常的缩进级别智商再加四个字符。
(4)、变量赋值,赋值符号左右各写上一个字符,例如:a = 'string'。
(5)、函数与类用两空行隔开,同一类下,各方法用一个空行隔开。
2、关于for循环,建议使用enumerate()函数:
url_lsit = ['http://top.le.com/filmhp.html','http://top.le.com/mfilmhp.html','http://top.le.com/comichp.html']
for index, url in enumerate(url_list):
print index
print url
3、关于yield:
我们首先来看一段代码:
def f(urls):
for index,letter in enumerate(urls):
yield letter,index
if __name__ == '__main__':
b = f(url_list)
print list(b)
print list(b)
我们会发现在第二次输出list的时候,会是一个空的列表,然而程序却没有报错,说得粗糙一点,就是说yield出来的东西只能用一次。迭代器只产生一轮结果
4、关于时间戳大于10个字符长度的时候
s = 1492052776760
if isinstance(s,long):
if len(str(s)) > 10:
s = float(str(s)[:10])
elif len(str(s))<10:
s = float(str(s)+"0"*(10-len(s)))
else:
s = s
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime( float(s) ) )
else:
print ""
# -*- coding: utf-8 -*-
from xpinyin import Pinyin
from Pinyin2Hanzi import DefaultHmmParams
from Pinyin2Hanzi import viterbi
p = Pinyin()
title = '鹿晗'
print p.get_pinyin(u'%s'%(title)).replace('-','')
name_list = p.get_pinyin(u'%s'%(title)).split('-')
print name_list
6、将多个字符串转换为list:
# -*- coding: utf-8 -*-
import re
# #辅助函数:将多个字符串转换为list,例如:
# a = '''
# 兰雄传媒有限公司 ============> ['兰雄传媒有限公司','北京东方天星文化传媒有限公司']
# 北京东方天星文化传媒有限公司
# '''
def str_to_list(a):
input = re.sub('\n+',',',a)
input = re.sub(' +','',input)
input = list(set(input.split(',')[1:-1]))
print input,len(input),type(input)
return input
注意,字符串中间是没有逗号的。