谷歌年薪100万+的测试猿怎么写 python 代码?

news2024/10/6 14:33:30

谷歌员工怎么写 python 代码?

谷歌内部的 python 代码规范

熟悉 python 一般都会努力遵循 pep8 规范,也会有一些公司制定内部的代码规范。大公司制定规范的目的不是说你一定要怎样去使用编程语言,而是让大家遵守同一套规则,节省其他人阅读代码的成本,方便协作和沟通。

对于个人而言,日常编写代码只需要保持风格统一,前后一致,就是一个很大的胜利,然后再加入一些实用的规则,在写代码的时候有效减少可能引入的 bug。

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

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

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

# yes
from sound.effects import echo
echo.EchoFilter()

# no
from sound.effects.echo import EchoFilter
EchoFilter()

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386 

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337 

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

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

# yes
from doctor.who import jodie

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

3,谨慎使用异常

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

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

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

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

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

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

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

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

# yes
try:
    1 / 0
    "abc"[100]
except ZeroDivisionError:
    ...
except IndexError:
    ...

# no
try:
    1 / 0
    "abc"[100]
except:
    ...

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

# yes
def foo(a, b=None):
    if b is None:
        b = []
def foo(a, b: Sequence = ()):

# no
def 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: # sequence
if number == 0:
if i % 10 == 0:
def f(x=None):
    if x is None:

# no
if 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 的类型声明成本学习成本较高。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用 VuePress 搭建博客网站并 Vercel 部署

先来看一下网站截图: 快速上手 1.创建并进入一个新目录 mkdir vuepress-starter && cd vuepress-starter2.使用你喜欢的包管理器进行初始化 yarn init # npm init3.将 VuePress 安装为本地依赖 yarn add -D vuepress # npm install -D vuepress4.创建你…

react 中setState 的三种写法

目录 1:使用对象形式的setState: 2:使用函数形式的setState: 3:使用回调函数: 1:使用对象形式的setState: this.setState({ count: 0 });2:使用函数形式的setState: this.setSt…

演讲回顾 | 龙智专家分享“支撑、共享与安全:芯片开发中的数字资产管理”

近日,龙智亮相D&R IP-SoC China 2023 Day,呈现集成了Perforce与Atlassian产品的芯片开发解决方案,助力企业更好、更快地进行芯片开发。 龙智资深顾问、技术支持部门负责人李培在展会现场带来了主题为《支撑、共享与安全:芯片…

C语言里的static变量其他语言是看不上还是学不去?

C语言里的static变量其他语言是看不上还是学不去? static变量在C语言中被用于具有静态存储期的局部变量或全局变量。它有以下几个特点: 1. 静态存储期:static变量在程序执行时分配内存,直到程序结束才会释放,其生命周期与程序的…

1024程序员节献礼,火山引擎ByteHouse带来三重产品福利

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 随着信息技术飞速发展,互联网、Web3、物联网、人工智能相继出现。 在这近三十年的高速发展中,“程序员”也成为构建丰富互联网世界的中坚力量…

FC-TSGAS-1624 CP451-10 MVI56E-MNETC IC697CMM742

FC-TSGAS-1624 CP451-10 MVI56E-MNETC IC697CMM742. Variscite的DART-MX8M-PLUS和VAR-SOM-MX8M-PLUS基于恩智浦i.MX 8M Plus SoC,集成人工智能能力高达每秒2.3万亿次运算(TOPS)。这些产品,结合海螺-8 AI处理器提供多达26个top,显著优于市场…

idea必装的插件 Spring Boot Helper 插件(创建 Spring Boot 项目)

Spring Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和⽣产⼒的关注使其成为 世界上最流⾏的Java框架。Spring官⽅提供了很多开源的项⽬,覆盖范围从Web开发到⼤数据,Spring发展到了今天,已经形成了⾃ ⼰的⽣态圈.我们在开发时,也倾向于使⽤Spring官⽅提供的技术…

大热电视剧《好事成双》里IT故事:科班程序员指法篇

自2023年9月19日在央视八套首播,并在腾讯视频同步播出以来,电视剧《好事成双》聚焦当代社会环境,《好事成双》用生动的群像故事触动人心,描绘了一幅当代都市男女的生活画卷,热度持续走高,成为中秋、国庆假日…

如何判断无损连接(例题)

目录 1. 定义2. 例题3. 补充 1. 定义 无损连接: 如果在关系模式的分解中,能够通过连接已分解的子关系来获得原始关系的信息,而不引入任何数据损失 候选关键字: 候选关键字是能够唯一标识每个元组的属性集。 2. 例题 设关系模式…

在Xamarin.Android项目中调用自己写的java jar包

一、开发环境 1.IntelliJ IDEA 2023.2.3 (Community Edition) 2.Visual Studio 2019 (v16.11.30) 3.Windows PowerShell 二、打开IDEA,编写Java脚本并编译为jar文件 1.打开IDEA--->File--->New--->Project... 三、打开Visual Studio 2019,…

SpringBoot_minio sdk使用自签名https证书错误处理

minio sdk使用自签名https证书错误处理 1.问题描述1.1 报错日志1.2 maven 依赖配置1.3 当前spring MinioClient配置 2.问题分析3.问题解决3.1 使用受信任的证书3.2 忽略证书验证3.2.1 minio客户端3.2.2 minio sdk 忽略证书验证3.2.2.1 拓展: 补充minioclient请求日志 4. 问题总…

如果重回大一学软件工程,你会做什么?

如果重回大一学软件工程,你会做什么? 说白了,就是想要一个过来人的学习路线呗?1、学好线性代数和离散数学,因为追本溯源,计算机行业的本质就是数学,更是算法、机器学习,视觉处理这些…

人工智能算法PPT学习

YOLO You only look once 是一种图像识别算法,速度较快。高效、灵活、泛化性能好,在工业中较为受欢迎。 图像金字塔 一幅图像的多个不同分辨率的子图构成的图像集合。是通过一个图像不断的降低采样率产生的,最小的图像可能仅仅有一个像素点…

Linux本地RStudio工具安装指南及远程访问配置安装RStudio Server

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问…

【C++项目】高并发内存池第三讲PageCache框架涉及+核心实现(上)

PageCache 1. PageCache框架设计1.1整体设计1.2CentralCache向PageCache申请内存的逻辑设计 2.PageCache的核心框架实现这里着重介绍一下CentralCache向PageCache申请内存的过程: 1. PageCache框架设计 1.1整体设计 回顾: 如图所示 内存申请的过程是逐步往下的&a…

让你随时随地访问金蝶云星空企业版v8.0,内网穿透轻松实现远程办公!

文章目录 前言1. 金蝶云星空企业版v8.0安装下载1.1 登录金蝶官网下载安装包1.2 常见的安装下载问题 2. 金蝶云星空配置SQL Sever数据库2.1 创建数据管理中心2.2 创建完成后在服务器登录管理站点 3. 下载安装注册cpolar3.1 公网访问测试 4. 固定连接公网地址 前言 金蝶云星空专注…

【C++】二叉树进阶 -- 详解

一、二叉搜索树概念 二叉搜索树 又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点…

API接口采集商品详情页面数据(H5端和PC端)item_get-获得淘宝商品详情

API接口是一种商业软件开发工具,可以帮助开发者实现业务需求。通过 API接口,开发人员可以快速搭建自己的应用,实现数据采集分析和处理,也可以通过这个接口完成与其它系统的集成与通信。电商API就是各大电商平台提供给开发者访问平…

深度学习中的不确定性综述

领域学者: http://www.gatsby.ucl.ac.uk/~balaji/ 论文标题: A Survey of Uncertainty in Deep Neural Networks 论文链接: https://arxiv.org/pdf/2107.03342.pdf 概要 在过去的十年中,神经网络几乎遍及所有科学领域&#x…

Mac电脑怎么在Dock窗口预览,Dock窗口预览工具DockView功能介绍

DockView是一款Mac电脑上的软件,它可以增强Dock的功能,让用户更方便地管理和切换应用程序。 DockView的主要功能是在 DockQ,栏上显示每个窗口的缩略图,并提供了一些相关的操作选项。当用户将鼠标悬停在Dock栏上的应用程序图标上时…