栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

“偷“了一份10年Python人的代码手记,摘抄关键点,分享给你,请秘密阅读!

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“偷“了一份10年Python人的代码手记,摘抄关键点,分享给你,请秘密阅读!

人生苦短,早用Python!直接开始:

15个点
  • 1. 变量
  • 2. 条件分支
  • 3. 字符串拼接
  • 4. 容器
  • 5. 函数

1. 变量

匈牙利命名法,命名方法由 JOEL SPOLSKY 在 2015 的一篇文章中提出:就是把变量的『类型』缩写,放到变量名的最前面!
举个列子说明一下:比如自定义一个person类,一般会使用students、teachers来指代一个person的list,但是这样写总觉得缺少了什么,那么就可以使用 pl_students 或pl_teachers ,前面的pl指代person的list,是不是感觉更好了!

2. 条件分支

德摩根定律,相信一定都听过,就是: not A or not B 等价于 not (A and B)!
举个列子:判断用户吐过不是使用嘿嘿浏览器或者没有登录,那么就不能访问该黑客网站!
一般会这样写:

if not user.has_logged_in or not user.is_from_heihei:
   return "our service is only available for heihei logged in user"

但是这样会不会好点:

if not (user.has_logged_in and user.is_from_heihei):
   return "our service is only available for heihei logged in user"
3. 字符串拼接

你一定听说过:“Python 里的字符串是不可变的,所以每一次对字符串进行拼接都会生成一个新对象,导致新的内存分配,效率非常低”,导致你不敢使用+或+=来拼接字符串,相信在Java里也听过这个说法。但要记住:语言的更新非常快,不要被别人的经验所左右,+= 的方式来拼接字符串,效率已经和 “”.join(str_list)差不多了!并且Java中常量字符串的拼接(String s=“a”+“b”)并不会产生新的对象!

4. 容器

了解容器类型的底层实现,可以帮助你写出性能更好的代码,换句话说:提炼需求里的抽象概念,面向接口而非实现编程!emm……
举个例子:有一个列表,里面装着很多用户评论,为了在页面正常展示,需要将所有超过一定长度的评论用省略号替代:这里面使用了强依赖List[str]

def add_ellipsis(comments: typing.List[str], max_length: int = 12):
    index = 0
    for comment in comments:
        comment = comment.strip()
        if len(comment) > max_length:
            comments[index] = comment[:max_length] + '...'
        index += 1
    return comments


comments = [
    "Implementation note",
    "Changed",
    "ABC for generator",
]
print("n".join(add_ellipsis(comments)))

此时不是一个列表了,是一个tuple或者一个set,那么不是意味着方法需要重新写吗,或者这样:add_ellipsis(list(comments)) 改一下,不是太好吧,那么这样呢:让函数依赖“可迭代对象”这个抽象概念,而不是一个list类型

def add_ellipsis_gen(comments: typing.Iterable[str], max_length: int = 12):
    for comment in comments:
        comment = comment.strip()
        if len(comment) > max_length:
            yield comment[:max_length] + '...'
        else:
            yield comment

print("n".join(add_ellipsis_gen(comments)))
5. 函数

不要局限于return,某些情况下使用yield 返回生成器对象,raise 抛出异常对象,要来的更加的好用!


来活了,下次接着写!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348306.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号