腾讯测试大佬分享4个关于 Python 函数(方法)的冷知识

news2024/12/23 5:17:50

关于参数标识

不知道大家在工作中有没有遇到一种情况,你的同事 A 写了一个方法给你调用,然后你调用时不知道该传什么参数,然后这个同事 A 还很 cao dan 的居然不加班!你一脸茫然的看着这个方法,当你尝试传进去一个 abc,结果代码就报错了,此时此刻你是不是很苦恼、很想把你同事 A 暴打一顿逼问他这个方法到底该传个啥进去?

那么有没有办法解决这个问题呢?答案就是让你的同事在参数上标识出参数期望接收的值是啥,代码如下:

def fun(a: list):
    pass

通过在 a 参数后面跟上 : list 可以标识出 a 参数期望传入一个 list 类型,相当于给 a 参数写了一个注释。

不过,在实际工作中更多的是用来标识自定义类的名称(如下图),这样标识出来,别人在调用你这个方法时就知道该传个什么东西进去了。

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

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

图片

另外,如果你就是不听话,非得瞎传,那会怎样呢?

答案是不会怎样,因为这个标识并没有强限制,你瞎传进去本身并不会报错(只有当程序运行到要使用这个参数时,才可能会报错。),但如果你用的是 Pychram 写代码,那大概率会给你提示的传参类型不对的警告:

图片

另外,参数标识还有一个好处,特别是依赖编译器提示的同学。比如下面的函数,我函数的功能是删除传进来的列表地一个值,但是我又忘记了 list 内置的删除方法是怎么写的了,那就可以通过将参数 a 标识为 list,然后 pychram 就能知道参数 a 应该是个 list,就可以给你提供代码提示了:

图片

关于标识返回类型

又回到刚刚那个场景,自从暴打一顿同事 A 之后,我知道了他写的方法该怎么传参之后,问题又来了,那这个方法返回个啥呢?难道要自己运行一下代码,再打印 type 去看吗?这显然也不合理!(别问哪里不合理,反正我就是这么任性,把同事 A 再打一顿....)

然后,同事 A 默默的在函数名称后面加上了一句话,就解决了这个事情:

图片

就是后面的 -> list 这里的意思就是标识出 fun 函数会返回一个 list,然后返回标识和参数标识其实都是差不多的用法,也可以返回自定义类。

关于函数的占位符

像 pass 和 ... 都是函数的占位符,多数情况下是用来类中,当类的某个方法目前还未实现或者需要子类重写时,就可以用 pass 或者 ... 来先占位,两者效果是一样的。

图片

关于限制传参方式

某天,我写了一个方法,方法的参数有很多,同事 A 这个傻子在调用我的方法时,代码一直报错,查了很久,结果发现是他传参数的顺序错了,在我暴打他一顿之后,当机立断强制要求调用我的方法时必须通过关键字参数传参,这样就可以避免参数位置错误的情况。

通过在参数前一个位置加上一个 * 号,就可以强制规定 * 号后的所有参数都只能通过关键字参数传参,否则会报错, 使用时要注意别和 *agr 和 **kwarg 的使用搞混了

图片

图片

然后在某一天,我突然想给同事 A 搞点事情(好孩子不要学),我把参数中的 * 号删除了,但我在最后一个位置加上了一个/,强制改为只能通过位置参数传参。

图片

总结一下,* 代表是 * 后的所有参数都必须通过关键字参数传参,而 / 则是 / 前的所有参数都必须通过位置参数传参,因此在使用时要注意位置不要写错了。

图片

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

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

相关文章

极狐GitLab 全新「价值流仪表盘」使用指南

本文来源:about.gitlab.com 作者:Haim Snir 译者:极狐(GitLab) 市场部内容团队 GitLab / 极狐GitLab 价值流仪表盘的使用相对简单,这种可以定制化的仪表盘能够让决策者识别数字化转型进程中的趋势及机遇。 如果你已经在用 GitLab…

【FAQ】调用EasyDSS返回的直播快照接口,无法编辑只能新建的原因排查与解决

EasyDSS视频直播点播平台集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景上,平台可以运用在互联网教育、在线课堂、游戏直播等领域…

Couldn‘t lock the file :/tmp/bbc-filesystem-base_syscache_service

解决方案: 进去带这个目录,然后切换成root用户,将它删除

17. Spring 事务

目录 1. 事务定义 2. MySQL 中的事务使用 3. 没有事务时的插入 4. Spring 编程式事务 5. Spring 声明式事务 5.1 Transactional 作用范围 5.2 Transactional 参数说明 5.3 Transactional 工作原理 1. 事务定义 将⼀组操作封装成一个执行单元(封装到一起…

LBP特征笔记

LBP,局部二值模式(Local Binary Pattern),是一种描述图像局部纹理特征的方式,具有旋转不变性和灰度不变性。首先由T. Ojala, M.Pietikinen, 和 D. Harwood 在1994年提出。 LBP特征描述 基础LBP算子 基础的LBP算子定义…

什么是耗尽型MOS管

我们常用的MOS管属于增强型MOS管,对于N沟道增强型MOS管,需要UGS大于开启电压,MOS管才能导通。 其实还有一种MOS管,当UGS大于0,等于0,小于0时MOS管都能导通,这种MOS管叫做耗尽型 MOS管。 以N沟道…

复现原型链污染漏洞

目录 一、复现原型链污染漏洞 hackit 2018 1、创建hackit_2018.js文件 2、运行hackit_2018.js文件 3、寻找原型链漏洞 4、污染原型链 hackit 2018 1、创建hackit_2018.js文件 const express require(express) var hbs require(hbs); var bodyParser require(body-par…

485modbus转profinet网关连接6台ABB 变频器通讯案例

昆仑通态通过485Modbus转Profinet网关实现了1200PLC与6台ABB变频器之间的Modbus通讯,触摸屏本地实时监控。485Modbus转Profinet网关作为中间桥梁,实现1200PLC与ABB变频器之间的互联互通,使得数据的传输变得高效可靠。 打开博图添加PLC,在这里…

2.4G芯片XL2408开发板,SOP16封装,芯片集成1T 8051内核单片机

XL2408开发板可用于2.4G芯片XL2408开发板的开发调试。XL2408烧录仿真需要使用WS_LINK。XL2408开发板烧录仿真需要接4根线:PA13:DIO,PA14:CLK,VCC,GND。 XL2408芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块,…

GY-NEO6MV2 GPS模块测试

GY-NEO6MV2 GPS模块测试 📓模块资料:GY-NEO6MV2 https://pan.baidu.com/s/17ihqLzXytrR2K2LmumvdKA🍁原理图(资料中有) 📑基本参数信息 🌿3V-5V供电通用。🌿默认波特率&#xff…

【JAVASE】static成员

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 static 1. static修饰成员变量2. static…

公司来了个拿 25K 出来的测试,算是见识到了基础的天花板

今天上班开早会就是新人见面仪式,听说来了个很厉害的大佬,年纪还不大,是上家公司离职过来的,薪资已经达到中高等水平,很多人都好奇不已,能拿到这个薪资应该人不简单,果然,自我介绍的…

数学知识(一)

一、数论 1.1质数 定义:在所有大于1的自然数&#xff0c;如果只包含1和本身这两个约数&#xff0c;就被称为质数(素数). 质数的判断:试除法 bool is_prime(int n) {if(n < 2) return false;for(int i 2;i < n / i;i ){if(n % i 0)return false;}return true; } 分…

一文学会git常用命令和使用指南

文章目录 0. 前言1.分支分类和管理1. 分支分类规范&#xff1a;2. 最佳实践3. 分支命名规范示例&#xff1a;4. 分支管理方法&#xff1a; 2. commit 注释规范1. 提交注释结构&#xff1a;2. 提交注释的准则&#xff1a; 3. git 常用命令1. git pull 核心用法2. git push 命令1…

C++初阶 - 6.模板初阶

目录 1.泛型编程 2.函数模板 2.1函数模板的概念 2.2函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 1.泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left…

SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring MVC入门 一、Spring MVC概述二、入门案例2.1导入Sp…

【宝藏系列】Linux 常用磁盘管理命令详解

【宝藏系列】Linux 常用磁盘管理命令详解 文章目录 【宝藏系列】Linux 常用磁盘管理命令详解前言1️⃣ df2️⃣du3️⃣fdisk&#x1f4df;磁盘格式化&#x1f4e0;磁盘检验⌨️磁盘挂载与卸除&#x1f4c0;卸载/dev/hdc6 前言 Linux磁盘管理常用三个命令为df、du和fdisk。 df…

Java框架(九)--Spring Boot入门(1)

SpringBoot 2.x入门简介 学前基础 Maven Spring MVC理念 开发环境 Spring Boot官网版本介绍 https://spring.io/projects/spring-boot#learn 我们点击 Reference Doc. &#xff0c;再点击Getting Started&#xff0c;就可以看到官网系统环境说明了 官网系统环境说明 Sp…

Nginx安装和Nginx配置虚拟主机

Nginx安装 源码包获取地址&#xff1a;http://nginx.org/download/ RPM包获取地址&#xff1a;http://nginx.org/packages/centos/7Server/x86_64/RPMS/ RPM安装 这里选择的RPM包是 nginx-1.22.0-1.el7.ngx.x86_64.rpm [rootlocalhost ~]# yum install nginx-1.22.0-1.el7.…

RabbitMQ:概念和安装,简单模式,工作,发布确认,交换机,死信队列,延迟队列,发布确认高级,其它知识,集群

1. 消息队列 1.0 课程介绍 1.1.MQ 的相关概念 1.1.1.什么是MQ MQ(message queue&#xff1a;消息队列)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是message 而已&#xff0c;还是一种跨进程的通信机制…