千家信息网

谷歌内部python代码规范的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"谷歌内部python代码规范的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"谷歌内部python代码规范的示例分析"这篇
千家信息网最后更新 2026年11月02日谷歌内部python代码规范的示例分析

这篇文章主要为大家展示了"谷歌内部python代码规范的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"谷歌内部python代码规范的示例分析"这篇文章吧。

谷歌内部的 python 代码规范

熟悉 python 一般都会努力遵循 pep8 规范,也会有一些公司制定内部的代码规范。大公司制定规范的目的不是说你一定要怎样去使用编程语言,而是让大家遵守同一套规则,节省其他人阅读代码的成本,方便协作和沟通。对于个人而言,日常编写代码只需要保持风格统一,前后一致,就是一个很大的胜利,然后再加入一些实用的规则,在写代码的时候有效减少可能引入的 bug。

接下来,我截取了一些谷歌的 python 代码规范中一些有意思的要点,希望日后能更深刻的感受到它们的用处。

1.导入模块和包,不导入单独的类、函数或者变量。

这通常能简化导入过程,方便命名空间管理。但是缺点也很明显,当名称较长时,调用函数和类的代码会很长,影响可读性。

  # yesfrom sound.effects import echoecho.EchoFilter() # nofrom sound.effects.echo import EchoFilterEchoFilter()

2.从根目录导入,不假定任意的 sys.path,也不使用相对导入。

假设 doctor.who 路径已经被某种手段添加到了 sys.path,也应该从开始的地方导入。

  # yesfrom doctor.who import jodie # other than doctor.who is already in sys.path# noimport jodie

3.谨慎使用异常

使用异常需要注意的细节有:

  • 优先合理的使用内置异常类。比如需要正数的情况下传递了一个负数引发的错误,抛出 ValueError 类型。

  • 永远不要使用 except 捕获所有的异常,这可能会造成一些隐藏 bug 难于发现。你应该使用特定异常类型分开捕获。

  • 不要使用 assert 指示某些意外情况,应该使用 raise。

  • 不要在 try 和 except 子句中加入太多逻辑,try 块的体积越大, 期望之外的异常就越容易被触发。

尽量使用正确的内置异常类型:

  def division(a, b):    if b == 0:        raise ValueError('b can not be zero')

避免全局捕获异常,指定异常类型:

  # yestry:    1 / 0    "abc"[100]except ZeroDivisionError:    ...except IndexError:    ... # notry:    1 / 0    "abc"[100]except:    ...

4.不要使用可变类型作为函数默认值,如果修改了这个变量,默认值也会跟着发生变化。

  # yesdef foo(a, b=None):    if b is None:        b = []def foo(a, b: Sequence = ()): # nodef foo(a, b=[]):def foo(a, b=time.time()):def foo(a, b={}):

5.注意条件表达式的隐式布尔值

  • 对于序列(字符串, 列表, 元组), 要注意空序列是 False,在判断是否为空序列时,使用隐性的 if not seq 判断,而不用 if len(seq) == 0;

  • 判断数字是否为 0,则使用 number == 0,而不使用用 if not number。因为 number 可能设置的是默认值为 None。

  • 判断是否为 None 使用 x is None,而不用 not x。

  # yes.if not users: # sequenceif number == 0:if i % 10 == 0:def f(x=None):    if x is None: # noif len(users) == 0:if number is not None and not number:if not i % 10:def f(x=None):    x = x or []

6.谨慎使用装饰器

装饰器可以在函数的参数或返回值上执行任何操作,这可能导致让人惊异的隐藏行为。而且, 装饰器在导入时执行,从装饰器代码中捕获错误并处理是很困难的。使用装饰器一定要编写单元测试,并且说明它的作用和使用方法。装饰器本身不要依赖于任何文件, socket, 数据库连接。避免使用 @staticmedthod 装饰器,多数情况下,将方法封装成模块级的函数可以达到同样的效果。

7.建议使用类型声明,类型声明的好处非常明显:

  • 使用类型声明可以提高代码的可读性。

  • 也可以使用类型检查工具提早发现问题。

  • 使用类型声明之后,doc string 中就没有必要对参数类型进行说明。

  • 在编辑器中会根据类型进行代码提示。

但是在实际操作过程中,类型声明往往很难维持。当代码更新完之后,一定要记得更新类型声明,过时的类型声明会对阅读者造成误导。python 的类型声明成本学习成本较高。

  # yesname: str = 'yuz'def func(a: int) -> List[int]:

以上是"谷歌内部python代码规范的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

类型 代码 函数 示例 分析 内容 序列 情况 成本 篇文章 学习 明显 不用 参数 变量 可读性 方法 模块 规则 过程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 互联网科技公司经营范围 互联网科技官网 猪兼强互联网科技 壹账通互联网科技 云创客互联网科技公司 中国互联网有什么科技含量 港股科技和互联网 洛阳昕诺飞互联网科技有限公司 互联网科技大奖都有哪些公司 上海京穆互联网科技有限公司 南通创西澳互联网科技有限公司 2021世界互联网领先科技成果发布 抖集互联网科技技术咨询 上海万顺科技互联网有限公司招聘 杭州融税互联网科技有限公司 10位科技互联网大佬 互联网科技大佬云集 重庆科技产业互联网有哪些 银川新华互联网科技学校招聘 远信互联网科技 艾特科技互联网 衡水科技产业互联网平台 中国互联网有什么科技含量 以后互联网后是啥科技 广州市恰铎互联网科技有限公司 江苏苏星互联网科技有限公司 风投北京互联网科技 广州梦谷互联网科技有限公司领导 伍佰万互联网科技是干嘛的
0