java
写的多一些,python
是这半年刚接触的语言,平时写一写只要求实现功能就行,真的到了大公司写真实项目这就需要一定的规范了,不然代码量一大简直就是要命,网上也有很多类似的教程,我作为一个初学python的人可能更加了解初学者的心里,今天把这几个月在公司学到的一些写python的小技巧分享下,很适合初学者!命名
是非常重要的,都说是面向对象编程,你总不能给你的对象乱取名字吧。当然,最重要的原因是当代码量很大的时候,如果别人来阅读你写的命名很乱的代码时,绝逼会很难受,你可以想象他在看一本全是不认识的字的书的那种感觉,下面是我觉得比较常用的几个命名规范(这里我用一个考生选学校的例子来讲
):"""
常量的命名:
1 通俗易懂,一看就知道什么意思的单词
2 各个单词小写且下划线_分开
3 一般不要超过三个单词
"""
# 小明 这里也可以直接用name
student_name = u'小明'
# 高考考了600分 也可以直接用score
exam_score = 600
"""
函数的命名:
和常量命名有点类似
最完美的就是让别人看到名字就知道这个函数的内容了
"""
# 看看下面几个函数名
def choose_college_by_score(exam_score):
if not exam_score:
return
return u'北大' if exam_score > 700 else u'清华'
def query_majors(college_name=None):
if not college_name:
return
return (u'软件工程', u'金融大数据', u'金服') if u'北大' in college_name else (u'nothing')
"""
类命名采用驼峰式的命名规范,这个和Java差不多,
一般也不超过三个单词,目的是别人看到名字就知道
这可能是用来干嘛的,我们把上面的例子融合进去,稍微有些改动
"""
class CollegeInfo(object):
def __init__(self):
self.student_name = u'小明'
self.exam_score = 720
self.college_name = u'北大'
pass
def choose_college_by_score(self, exam_score=None):
exam_score = exam_score if exam_score else self.exam_score
return u'北大' if exam_score > 700 else u'清华'
def query_majors(self, college_name=None):
college_name = college_name if college_name else self.college_name
return [u'软件工程', u'金融大数据', u'金服'] if u'北大' in college_name else [u'nothing']
def report(self, exam_score, college_name):
if not exam_score or not college_name:
return
return u'%s 今年考了%d分,能去%s,可选专业有:%s' % (self.student_name, exam_score,
self.choose_college_by_score(), ','.join(self.query_majors()))
# 这里常用的习惯, 一个类写完后变成下划线的形式给外部调用,可以理解成js里面 module.exports=xxx那样的感觉
college_info = CollegeInfo()
# 最后运行下,看看小明最终去了哪
if __name__ == "__main__":
print college_info.report(exam_score=720, college_name=u'北大')
软工
真的强!student_names = [u"bob", u"peter", u"macy"]
# 查找出名字里面有 m字母的同学
that_people = [name for name in student_names if u'm' in name]
# 千万不要下面这样, 一行能解决的就不要多花一点时间, python是越少越精髓
that_people = []
for name in student_names:
if u'm' in name:
that_people.append(that_people)
# 今年高考情况
exam_detail = {u'小明': 700, u'小美': 400, u'小希': 750}
# 找出分数大于500分的考生情况
detail = {k: v for k, v in exam_detail.items() if v > 500}
# 不要下面这样搞
detail = dict()
for k, v in exam_detail.items():
if v > 500:
detail[k] = v
这个可以参考这里, 装饰器写得好可以减少很多代码量,因为很多时候几个模块之前有共通的关系,可以没必要写重复的代码,廖老师讲得很好,可以学着写几个。