10分钟让你的代码更加pythonic

python常用书写技巧

前言

  • 之前是写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'北大')
  • 最终结果: 小明 今年考了720分,能去北大,可选专业有:软件工程,金融大数据,金服,当然北大软工真的强!

常用小技巧

遍历

数组遍历

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

装饰器

这个可以参考这里, 装饰器写得好可以减少很多代码量,因为很多时候几个模块之前有共通的关系,可以没必要写重复的代码,廖老师讲得很好,可以学着写几个。

猜你喜欢

转载自blog.csdn.net/g8433373/article/details/80709116